Java 使用Stax解析器解析XML 1.1文档时出错
我正在尝试解析Burp套件XML导出。我使用了Stax解析器和XPath解析器。但是我越来越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
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"));
}
}