Java 变压器厂腐败<;输入>;及<;br>;内部标签<;html>;标签
通过简单的代码解析和重写简单的xml,会发生一些奇怪的事情 输入:Java 变压器厂腐败<;输入>;及<;br>;内部标签<;html>;标签,java,xml,parsing,Java,Xml,Parsing,通过简单的代码解析和重写简单的xml,会发生一些奇怪的事情 输入: <html> <input></input> </html> 它是一个已知的bug吗?XSLT定义了一个,它可以是xml、html或文本 规范规定,如果根节点是,则默认输出方法应该是html,否则应该是xml 使用xml方法,您将获得 使用html方法,您将得到,因为 如果需要,可以显式提供输出方法: transformer.setOutputProperty(OutputKey
<html>
<input></input>
</html>
它是一个已知的bug吗?XSLT定义了一个,它可以是xml
、html
或文本
规范规定,如果根节点是
,则默认输出方法应该是html
,否则应该是xml
使用xml
方法,您将获得
使用html
方法,您将得到
,因为
如果需要,可以显式提供输出方法:
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
因此,具有
根节点的文档将输出XML,即
引号
:
方法
属性的默认值选择如下。如果
- 结果树的根节点有一个子元素
- 结果树的根节点(即文档元素)的第一个子元素的扩展名具有本地部分
html
(大写和小写的任意组合)和空名称空间URI,并且
- 结果树根节点的第一个子元素之前的任何文本节点仅包含空格字符
那么默认的输出方法是html
;否则,默认的输出方法是xml
。如果没有xsl:output
元素,或者如果没有xsl:output
元素指定method
属性的值,则应使用默认的输出方法
:
某些HTML元素类型没有内容。例如,换行元素BR
没有内容;它唯一的作用是终止一行文本此类空元素从来没有结束标记。文档类型定义和规范的文本指示元素类型是空的(没有内容),或者,如果它可以有内容,什么是合法内容
我立刻想到了自动关闭的html标签。。。
// READ XML
DocumentBuilderFactory builderFactory =DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
DocumentBuilder builder = builderFactory.newDocumentBuilder();
// PARSE
Document document = builder.parse(new InputSource(new StringReader(_xml_source)));
// WRITE XML
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
StringWriter buffer = new StringWriter();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.transform(new DOMSource(document), new StreamResult(buffer));
String output = buffer.toString();
transformer.setOutputProperty(OutputKeys.METHOD, "xml");