Я полагаюсь на реализацию JAXP по умолчанию и использую Oracle JRE .
При оценке XPath, который содержит неизвестный префикс пространства имен, он не генерирует (ожидаемое) исключение.
Когда я запускаю то же приложение на IBM JRE, все в порядке и выдает ожидаемое исключение javax.xml.xpath.XPathExpressionException: org.apache.xpath.domapi.XPathStylesheetDOM3Exception: Prefix must resolve to a namespace
Я использую следующий код, который пытается получить доступ к неверному пространству имен unknownns
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
.newInstance();
documentBuilderFactory.setNamespaceAware(true);
documentBuilderFactory.setValidating(true);
documentBuilderFactory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
Document doc = builder.parse(xmlFile_);
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodeList = (NodeList) xpath.evaluate("path/to/node/unknowns:@bla", doc,
XPathConstants.NODESET);
Вопрос:
Как я могу применить эту проверку независимо от реализации JAXP?