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