我开始在 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/