相关疑难解决方法(0)

namespace-unaware如果Saxon在CLASSPATH上,XPath表达式将失败

我有以下示例XML文件:

<a xmlns="http://www.foo.com">
    <b>
    </b>
</a>
Run Code Online (Sandbox Code Playgroud)

使用XPath表达式/foo:a/foo:b(在其中'foo'正确配置NamespaceContext)我可以正确计算b节点数,并且代码Saxon-HE-9.4.jar在CLASSPATH上和不在时都可以工作.

然而,当我分析了namespace-相同的文件不知道 DocumentBuilderFactory,XPath表达式"/ A/B"正确计数的数量b节点只当Saxon-HE-9.4.jar是没有在CLASSPATH.

代码如下:

import java.io.*;
import java.util.*;
import javax.xml.xpath.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import javax.xml.namespace.NamespaceContext;

public class FooMain {

    public static void main(String args[]) throws Exception {

        String xmlSample = "<a xmlns=\"http://www.foo.com\"><b></b></a>";
        {
            XPath xpath = namespaceUnawareXpath();
            System.out.printf("[NS-unaware] Number of 'b' nodes is: %d\n", 
                              ((NodeList) xpath.compile("/a/b").evaluate(stringToXML(xmlSample, false),
                              XPathConstants.NODESET)).getLength());
        }
        {
            XPath xpath …
Run Code Online (Sandbox Code Playgroud)

java xml xpath saxon

5
推荐指数
1
解决办法
1696
查看次数

标签 统计

java ×1

saxon ×1

xml ×1

xpath ×1