我需要解析非格式良好的xml数据(HTML)

Muh*_*edy 5 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>
Run Code Online (Sandbox Code Playgroud)

sim*_*ord 8

您可以先尝试通过jtidy API运行文档 - 它能够将html转换为有效的xhtml:http://jtidy.sourceforge.net/howto.html

Tidy tidy = new Tidy();
tidy.setXHTML(true);
tidy.parse(......)...
Run Code Online (Sandbox Code Playgroud)


Ste*_*wig 8

你可以使用TagSoup.我用它非常成功.它与Java XML API完全兼容,包括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));
}
Run Code Online (Sandbox Code Playgroud)


And*_*rna 1

并不真地。JAXP 需要格式良好的标记。您考虑过Cyber​​neko HTML 解析器吗?我们的商店在这方面非常成功。

编辑:我发现您也想解析 XML。嗯...Cyber​​neko 对于 HTML 工作得很好,但我不知道其他的。它有一个标签平衡器,可以关闭一些标签,但我不知道你是否可以训练它识别非 HTML 标签。