Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/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 使用Stax解析器解析XML 1.1文档时出错_Java_Xpath_Stax - Fatal编程技术网

Java 使用Stax解析器解析XML 1.1文档时出错

Java 使用Stax解析器解析XML 1.1文档时出错,java,xpath,stax,Java,Xpath,Stax,我正在尝试解析Burp套件XML导出。我使用了Stax解析器和XPath解析器。但是我越来越 Location: /py/message/viewBill.pt [id parameter]]]></location> <severity>High</severity> <confidence>Certain</confidence> <issueBackground><![CDATA[Reflected ja

我正在尝试解析Burp套件XML导出。我使用了Stax解析器和XPath解析器。但是我越来越

Location: /py/message/viewBill.pt [id parameter]]]></location>
<severity>High</severity>
<confidence>Certain</confidence>
<issueBackground><![CDATA[Reflected 
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[66,2357]
Message: The element type "location" must be terminated by the matching end-tag "< /location>".
    at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:604)
    at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:83)
我正在分析我在上面找到的报告


有人能给点建议吗

我冒昧地猜测这是XML解析器中的一个bug。具体地说,我怀疑它没有将第63行上的
]]]>
识别为终止CDATA部分,因此它一直认为它在CDATA中,直到第66行末尾的
]>
找到了它要查找的
的结束标记。向XML解析器的供应商提出问题,或者切换到一个有效的解决方案

我找到了一些用CSS解析打嗝导出的例子。比我在Java中发现的CSS解析更有用。这有点复杂,但效果很好

Document document = Jsoup.parse(str);
Elements allElements = document.getAllElements();

for (Element element : allElements) {
    String tagName = element.tagName();
    String text = element.text();
    if (tagName.equalsIgnoreCase("name")) {
        System.out.println("name " + text);
    } else if (tagName.equalsIgnoreCase("host")) {
        System.out.println("host " + text);
        System.out.println("ip " + element.attr("ip"));
    }
}

您使用的是哪个stax解析器?我猜它不支持XML1.1。你试过了吗?@ArvidHeise我在用xerces。
Document document = Jsoup.parse(str);
Elements allElements = document.getAllElements();

for (Element element : allElements) {
    String tagName = element.tagName();
    String text = element.text();
    if (tagName.equalsIgnoreCase("name")) {
        System.out.println("name " + text);
    } else if (tagName.equalsIgnoreCase("host")) {
        System.out.println("host " + text);
        System.out.println("ip " + element.attr("ip"));
    }
}