xml - xpath,计数元素错误: "Result is a NodeSet containing 1 element"

标签 xml xpath

我开始在 w3cschool 学习 xpath。我正在尝试评估游戏中的玩家数量。 (因此计算屏幕名称和 text() 元素/属性)

这是我的示例 xml:

<game>
    <info>
        <name>My Game</name>
        <description>A <i>very</i> interesting game.</description>
        <started>2012-03-01T18:00:00Z</started>
        <players number="2">
            <screenname player="1">Alice</screenname>
            <screenname player="2">Bob</screenname>
        </players>
        <rounds>2</rounds>
        <winner player="2"/>
    </info>
</game>

我使用的 xpath 查询是:

//game/info/players[count(.//screenname/text())]

但我只得到:

"Result is a NodeSet containing 1 element" 

(工具:http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm)

是什么导致了这个错误?

最佳答案

您的 XPath 查询可能应该是:

count(/game/info/players/screenname)

您现在使用的 XPath 要求所有 game/info/players 节点,这些节点具有非零数量的 screenname/text() 后代节点。由于只有一个 players 元素,因此生成的节点集仅包含一个元素。

请记住,XPath 是一系列由步骤 (/) 分隔的轴-节点测试-谓词表达式 (axis::nodetest[predicate])。只有 axis-nodetest 是发送到下一步的结果集的一部分——谓词永远不会出现在结果集中,因为它仅用于过滤。

关于xml - xpath,计数元素错误: "Result is a NodeSet containing 1 element",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10666383/

相关文章:

ruby - 如何在有前缀但没有 namespace 的节点上使用 xpath?

java - 读取和更新 XML 节点元素

php - Mink : Failed to execute 'evaluate' on 'Document' : The result is not a node set, 中的 XPath 错误,因此无法转换为所需的类型

xpath - 无法使用 RemoteWebDriver.FindElementsByXPath ("/"找到根元素);

xml - 修改某些 XML 元素的属性

xpath - 碎片 : Select tag with non-breaking space with xpath

xml - 如何用Go to struct list格式化这个xml?这个xml标签名是一样的,只是id不同

android - 如何将 Android fragment 添加到 Activity 中?

xml - XSLT 转换从 soap :env 中剥离所有命名空间

xml - 斯卡拉 XML : brace escapes in attributes