Я пытаюсь проанализировать строку, содержащую XML-контент, который соответствует XML 1.1 spec. XML содержит ссылки на символы, которые недопустимы в спецификации XML 1.0, но которые разрешены в спецификации XML 1.1 (ссылки на символы, которые переводят символы Unicode в диапазоне U + 0001-U + 001F).Как я могу разобрать XML, который подтверждает спецификацию 1.1 с использованием Java и Xerces?
В соответствии с Xerces2 website, анализатор Xerces2 поддерживает разбор документов XML 1.1. Тем не менее, я не могу понять, как сказать, что XML, который мы пытаемся проанализировать, содержит совместимый с XML 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?