java - Saxon XPathEvaluator 只返回第一个结果

标签 java xpath saxon

我正在尝试使用 Saxon 9.5 HE Java 库在 XML 文档中进行一些 XPaths 查询。我使用 net.sf.saxon.xpath.XPathEvaluator 创建了查询,并希望从 XML 文档中获取所有书名。不幸的是我只获得了第一个称号。这是我的示例代码:

public static void main(String[] args) 
{
    try
    {           
        InputSource is = new InputSource(new File("books.xml").toURI().toURL().toString());
        String x = new XPathEvaluator().evaluate("//book/title", is);

        System.out.println(x);  
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

谢谢和亲切的问候:)

最佳答案

我刚刚使用 XPathCompiler 实现了一个解决方案:

这很好用。有兴趣的可以看看源码:

public static void main(String[] args) 
{
    try
    {           
        Processor proc = new Processor(false);
        DocumentBuilder builder = proc.newDocumentBuilder();
        XPathCompiler xpc = proc.newXPathCompiler();

        XPathSelector selector = xpc.compile("//book/title").load();
        selector.setContextItem(builder.build(new File("books.xml")));
        for (XdmItem item: selector) 
        {
            System.out.println(item.getStringValue());
        }
    }   

    catch(Exception e)
    {
        e.printStackTrace();
    }
}

关于java - Saxon XPathEvaluator 只返回第一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16854574/

相关文章:

c# - 找到包含特定子元素的父元素

java - 从父类(super class)访问隐藏变量

python - 使用 Selenium 更改 Google map 评论排序

javascript - 我应该使用 Xpath 还是 regexp 来实现此目的?

javascript - 在服务器上实现 HTML DOM 重写逻辑

java - 如何使用 XPath 检查 XML 中是否存在元素?

java - 将文档作为参数传递给 xslt

java - 方法本地内部类隐藏方法字段

java - 当我可以直接使用类名访问唯一的静态方法时,创建 Spring bean 是否有利

java - 使用 Batik to SVG 将 SVG 转换为 PNG 时,Linux 和 OSX 之间的文本差异