Java 我需要解析格式不正确的xml数据(HTML)
我在JAVA中有一些格式不正确的xml(HTML)数据,我使用了JAXP Dom,但它会抱怨 问题是:有没有办法 使用JAXP解析此类文档 我有一个包含以下数据的文件:Java 我需要解析格式不正确的xml数据(HTML),java,xml,parsing,jaxp,Java,Xml,Parsing,Jaxp,我在JAVA中有一些格式不正确的xml(HTML)数据,我使用了JAXP Dom,但它会抱怨 问题是:有没有办法 使用JAXP解析此类文档 我有一个包含以下数据的文件: <employee> <name value="ahmed" > <!-- note, this element is not closed, So it is not well-formed xml--> </employee> 不太可能。JAXP需要格式良好的标记。你考虑过
<employee>
<name value="ahmed" > <!-- note, this element is not closed, So it is not well-formed xml-->
</employee>
不太可能。JAXP需要格式良好的标记。你考虑过这个问题吗?我们在店里做得很成功
编辑:我看到您也想要解析XML。嗯。。。。Cyberneko对HTML很有效,但我不知道其他的。它有一个标记平衡器,可以关闭一些标记,但我不知道您是否可以训练它识别非HTML的标记。您可以先尝试通过jtidy API运行文档,该API能够将HTML转换为有效的xhtml: 你可以用。我已经成功地使用了它。它与JavaXMLAPI完全兼容,包括SAX、DOM、XSLT和StAX。例如,下面是我如何使用它将XSLT转换应用于特别差的HTML:
public static void transform(InputStream style, InputStream data)
throws SAXException, TransformerException {
XMLReader reader =
XMLReaderFactory.createXMLReader("org.ccil.cowan.tagsoup.Parser");
Source input = new SAXSource(reader, new InputSource(data));
Source xsl = new StreamSource(style);
Transformer transformer =
TransformerFactory.newInstance().newTransformer(xsl);
transformer.transform(input, new StreamResult(System.out));
}
它允许修改文档吗?它是一个解析器,因此您必须使用DOM HTML解析器解析文档,然后在生成的DOM树中修改文档。您可以启用一些设置来帮助您获得一个好的结果树,这些设置记录在
public static void transform(InputStream style, InputStream data)
throws SAXException, TransformerException {
XMLReader reader =
XMLReaderFactory.createXMLReader("org.ccil.cowan.tagsoup.Parser");
Source input = new SAXSource(reader, new InputSource(data));
Source xsl = new StreamSource(style);
Transformer transformer =
TransformerFactory.newInstance().newTransformer(xsl);
transformer.transform(input, new StreamResult(System.out));
}