JDOM HTML 到 XML 的转换 - 即使它有一个子节点,也会生成父节点 selfend 标记
Posted
技术标签:
【中文标题】JDOM HTML 到 XML 的转换 - 即使它有一个子节点,也会生成父节点 selfend 标记【英文标题】:JDOM HTML to XML Conversion - parent node selfend tag generating eventhough it having a child node 【发布时间】:2017-07-30 00:06:38 【问题描述】:JDOM 解析器用于解析和转换 html 文件到 XML 文件。解析html文件后,即使它有一个子节点,也会生成自结束标记。 输入HTML
<li id="fieldId1" fieldtype="dropdownFromList">
<span>
<sflabel path="polProdCode">
<fmtmessage key="mpolicy.policy.polProdCode.lable" />
</sflabel>
</span>
</li>
输出XML
<span>
<sflabel path="polProdCode" /> ---sflabel tag selfclosing after the conversion
<fmtmessage key="mpolicy.policy.polProdCode.lable" />
</span>
预期的 XML
<span>
<sflabel path="polProdCode" >
<fmtmessage key="mpolicy.policy.polProdCode.lable" />
</sflabel> ----need endtag
</span>
Java 代码
SAXBuilder saxBuilder = new SAXBuilder("org.ccil.cowan.tagsoup.Parser", false);
File log = new File("log.html");
org.jdom.Document jdomDocument = saxBuilder.build(log);
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
fwOutXml = new FileWriter("output.xml");
bwOutXml = new BufferedWriter(fwOutXml);
outputter.output(jdomDocument, bwOutXml);
【问题讨论】:
这几乎肯定是 tagoup 库中的一个问题.... JDOM 实际上并不是解析器,它只是一个内存模型。 tagsoup 库是解析器,它必须在 SAX 流上提供错误的事件。 是否有任何替代 saxDriverClass 来克服这个问题? 【参考方案1】:我已通过删除 saxdriverclass 并留空来修复转换
SAXBuilder saxBuilder = new SAXBuilder();
【讨论】:
以上是关于JDOM HTML 到 XML 的转换 - 即使它有一个子节点,也会生成父节点 selfend 标记的主要内容,如果未能解决你的问题,请参考以下文章