我想解析一个包含符合XML 1.1 spec的XML内容的字符串。 XML包含字符引用,这些引用在XML 1.0规范中是不允许的,但在XML 1.1规范中允许使用(在U + 0001-U + 001F范围内转换为Unicode字符的字符引用)。如何解析使用Java和Xerces确认1.1规范的XML?
根据Xerces2 website, Xerces2解析器支持解析XML 1.1文档。但是,我无法弄清楚如何告诉它我们试图解析的XML包含符合1.1标准的XML。
我使用的DocumentBuilder解析XML(像这样):
public Element parseString(String xmlString) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
InputSource source = new InputSource(new StringReader(xmlString));
// Throws org.xml.sax.SAXParseException becuase of the invalid character refs
Document doc = documentBuilder.parse(source);
return doc.getDocumentElement();
} catch (ParserConfigurationException pce) {
// Handle the error
} catch (SAXException se) {
// Handle the error
} catch (IOException ioe) {
// Handle the error
}
}
我试过设置XML头指示XML符合1.1规范...
xmlString = "<?xml version=\"1.1\" encoding=\"UTF-8\" ?>" + xmlString;
...但它仍然被解析为1.0 XML(仍然生成无效的字符引用异常)。
如何配置Xerces解析器将XML解析为XML 1.1?是否有替代解析器可以更好地支持XML 1.1?