Что касается разбора xpath xml с пространством имен по умолчанию с использованием Saxon

Мне нужна была информация, связанная с разбором xpath пространства имен по умолчанию с использованием saxon. Я использую Saxon-HE-9.5.1-3.jar для использования функций xpath 2 в моем коде. После включения библиотеки saxon в путь к классу я столкнулся с проблемой разбора xpath для документов XML с пространствами имен по умолчанию.

Пример XML в я использую:

<?xml version="1.0" encoding="utf-8"?>
<RESPONSE  xmlns="http://www.abc.com/" responseCode="200">
  <HEADER>
    <HITS>100</HITS>
  </HEADER>
</RESPONSE>

Действительный XPATH: / RESPONSE / HEADER / HITS

Ниже приведены случаи, когда это работает и не работает:

"XPATH Works" : Когда пространство имен не указано
Пример :<RESPONSE responseCode="200">

"XPATH Works" : Когда задано пространство имен с префиксом
Пример :<RESPONSE xmlns:res="http://www.abc.com/" responseCode="200">

«XPATH не работает» : Когда задано пространство имен по умолчанию с префиксом out Пример:<RESPONSE xmlns="http://www.abc.com/" responseCode="200">

Подскажите, пожалуйста, почему saxon по-другому не относится к пространству имен и пространству имен по умолчанию? Также, как я могу решить случай выполнения xpath для документов с пространством имен по умолчанию.

Ниже приведены фрагменты моего кода:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import net.sf.saxon.xpath.XPathEvaluator;
import net.sf.saxon.xpath.XPathFactoryImpl;

.
.
.

DocumentBuilder builder;
Document doc;

DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
builder = domFactory.newDocumentBuilder();
doc = builder.parse(new ByteArrayInputStream(b, 0, size));

XPathFactory factory = XPathFactoryImpl.newInstance(XPathConstants.DOM_OBJECT_MODEL);
XPathEvaluator xpathCompiler = (XPathEvaluator) factory.newXPath();
XPathExpression expr = xpathCompiler.compile(xpath);
NodeList childNodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);

Спасибо и С уважением, Пратап

Ответы на вопрос(1)

Ваш ответ на вопрос