在SAX-Parser中停用XML验证

时间:2018-03-21 09:53:35

标签: xml validation sax

我想以快速方式解析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.

0 个答案:

没有答案