我开始在w3cschool学习xpath.我正在尝试评估游戏中的玩家数量.(所以计算screenname和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>
Run Code Online (Sandbox Code Playgroud)
我使用的xpath查询是:
//game/info/players[count(.//screenname/text())]
Run Code Online (Sandbox Code Playgroud)
但我只得到:
"Result is a NodeSet containing 1 element"
Run Code Online (Sandbox Code Playgroud)
(工具:http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm)
是什么导致这个错误?
Fra*_*ila 11
您的XPath查询可能应该是:
count(/game/info/players/screenname)
Run Code Online (Sandbox Code Playgroud)
您现在使用的XPath是要求所有game/info/players具有非零数量的screenname/text()后代节点的节点.由于只有一个players元素,因此生成的节点集只包含一个元素.
请记住,XPath是一系列由nodes(axis::nodetest[predicate])分隔的axis-nodetest-predicate表达式(/).只有axis-nodetest是发送到下一步的结果集的一部分 - 谓词永远不会出现在结果集中,因为它仅用于过滤.