我想以快速方式解析xml String。如果xml不包含我正在寻找的值,我将忽略xml。所以我不需要xml验证,没有对象绑定等。 我只想读取xml中的一个特定值。
我决定使用SAX解析器。 我遇到的问题是我得到验证错误,所以我试图停用验证,但到目前为止它不起作用。 有什么建议吗?
解析代码:
private String parseXml(String xml) throws ParserConfigurationException, SAXException, IOException{
saxParserFactory.setValidating(false);
saxParserFactory.setNamespaceAware(false);
saxParserFactory.setXIncludeAware(false);
saxParserFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl",true);
saxParserFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
saxParserFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
saxParserFactory.setFeature("http://xml.org/sax/features/namespaces", false);
saxParserFactory.setFeature("http://xml.org/sax/features/use-entity-resolver2", false);
saxParserFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
SAXParser saxParser = saxParserFactory.newSAXParser();
XmlResponseSaxHandler handler = new XmlResponseSaxHandler();
saxParser.parse(xml, handler);
return handler.getValue();
}
处理程序-片段:
@Override
public InputSource resolveEntity(String arg0, String arg1) throws IOException, SAXException {
//Do not download dtd
return new InputSource(new StringReader(""));
}
错误:
org.xml.sax.SAXParseException: cos-nonambig: "http://www.w3.org/2000/09/xmldsig#":Reference und WC[##other:"http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd"] (oder Elemente aus ihrer Substitutionsgruppe) verletzen 'Unique Particle Attribution'. Bei der Validierung für dieses Schema würde eine Mehrdeutigkeit für diese beiden Partikel erstellt.