Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要解析格式不正确的xml数据(HTML)_Java_Xml_Parsing_Jaxp - Fatal编程技术网

Java 我需要解析格式不正确的xml数据(HTML)

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需要格式良好的标记。你考虑过

我在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需要格式良好的标记。你考虑过这个问题吗?我们在店里做得很成功


编辑:我看到您也想要解析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));
}