【问题标题】:Xpath Filter in Java Brings Back Only the First Value Result ReapitlyJava 中的 Xpath 过滤器仅返回第一个值结果
【发布时间】:2018-12-11 10:07:39
【问题描述】:

我是新来的,简而言之,我遇到了这个问题。 我想获取具有属性“@name='Priority' 作为列表的孩子的所有值,我编辑这个:

    XPathExpression expr = xpath.compile ("//*[@name='Priority']");
        NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
         System.out.println("Found " + nl.getLength() );
            for(int i = 0; i < nl.getLength(); i++) {
                System.out.println("Priority:" + xpath.compile("//*[@name='Priority']").evaluate(nl.item(i)));
                System.out.println("==================");
            }

这里是我的 XML 结构

  <INSTANCE id="obj.43200" class="Car" name="Car-43200">
        <ATTRIBUTE name="Position" type="STRING">NODE x:15.5cm y:7cm w:1.5cm h:1cm index:69</ATTRIBUTE>
        <ATTRIBUTE name="External tool coupling" type="STRING" />
        <ATTRIBUTE name="Direction" type="ENUMERATION">Horizontal</ATTRIBUTE>
        <ATTRIBUTE name="Priority" type="INTEGER">40</ATTRIBUTE>
     </INSTANCE>

但是当我在 eclips 中执行 Java 代码时,我得到了这个:

    Found 9
Priority:40
==================
Priority:40
==================
Priority:40
==================
Priority:40
==================
Priority:40
==================
Priority:40
==================
Priority:40
==================
Priority:40
==================
Priority:40
==================

它只给我带来第一个结果作为所有其他 8 个 XPath 过滤器结果的最终结果。 exmp应该是这样的:

     Found 2
Priority:40
==================
Priority:5

等等……

我能做什么?在此先感谢:)

【问题讨论】:

    标签: java xml xpath filter


    【解决方案1】:

    根据给定的xml内容和java代码,输出如下

    Found 1
    Priority:40
    ==================
    

    我不知道您的 xml 内容。请试试这个

    XPathExpression expr = xpath.compile ("//*[@name='Priority']");
    NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
    System.out.println("Found " + nl.getLength() );
    for(int i = 0; i < nl.getLength(); i++) {
        System.out.println("Priority:" + nl.item(i).getTextContent());
        System.out.println("==================");
    }
    

    【讨论】:

    • 我现在无法测试它,但我有点喜欢这个逻辑,我稍后会尝试谢谢 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多