我需要解析非格式良好的xml数据(HTML)
我在JAVA中有一些格式不正确的xml(HTML)数据,我使用了JAXP Dom,但它抱怨道。
问题是:有没有办法使用JAXP来解析这些文件?
我有一个包含以下数据的文件:
并不是的。 JAXP需要格式良好的标记。 您是否考虑过Cyberneko HTML Parser ? 我们在我们的商店非常成功。
编辑:我看到你也想解析XML。 Hrmm …. Cyberneko适用于HTML,但我不了解其他人。 它有一个标签平衡器可以关闭一些标签,但我不知道你是否可以训练它来识别不是HTML的标签。
您可以先尝试通过jtidy API运行文档 – 它能够将html转换为有效的xhtml: http : //jtidy.sourceforge.net/howto.html
Tidy tidy = new Tidy(); tidy.setXHTML(true); tidy.parse(......)...
你可以使用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)); }