简单的任务。这是XPath表达式:
/methods/method[@token = '06000009']/sequencePoints/entry[string(@ilOffset) <= string('00000e')][last()]
这是要查询的XML文档的一部分:
<methods>
<method token="06000009">
<sequencePoints>
<entry ilOffset="000000" startLine="178" startColumn="3" />
<entry ilOffset="000001" startLine="179" startColumn="4" />
<entry ilOffset="000008" startLine="180" startColumn="4" />
<entry ilOffset="000009" startLine="181" startColumn="5" />
<entry ilOffset="00000f" startLine="182" startColumn="4" />
<entry ilOffset="000010" hidden="true" />
<entry ilOffset="000022" hidden="true" />
<entry ilOffset="000023" startLine="183" startColumn="3" />
</sequencePoints>
</method>
</methods>
一无所获。但它应该找到这个元素:
<entry ilOffset="000009" ...>
为什么不起作用?
我不确定是否需要进行string()
转换。但没有它它也不起作用。我只是不希望XPath比较数字,因为十六进制值可能会出错。
答案 0 :(得分:1)
XPath 2.0:
是。在您的方案中,您正在比较两个字符串。这是合法的,应该可以正常工作。如果它不起作用,那么你最有可能使用xpath 1.0。
XPath 1.0:
不是真的。它只能将字符串与=
和!=
运算符进行比较。