使用xpath获取节点的第N个子节点

Ior*_*nev 69 xml xpath

我的示例输入XML是:

<root>
 <a>
   <b>item</b>
   <b>item1</b>
   <b>item2</b>
   <b>item3</b>
   <b>item4</b>
 </a>
</root>
Run Code Online (Sandbox Code Playgroud)

我想选择一个b位置是变量值的节点.

如何使用变量的值来测试节点的位置?

rem*_*rel 90

你可以用这个:

/root/a/b[position()=$variable]
Run Code Online (Sandbox Code Playgroud)

position()是1

http://saxon.sourceforge.net/saxon6.5.3/expressions.html

  • 记住它不是0索引的.我只花了2个小时浪费时间在0号位找东西. (11认同)

Ron*_*erg 48

以下应该有效:

/root/a/b[2]
Run Code Online (Sandbox Code Playgroud)

如果没有,请尝试:

/root/a/b[position()=2]
Run Code Online (Sandbox Code Playgroud)

  • `position()`指的是dom中的位置[2]指的是结果列表中的第二个结果. (11认同)
  • 我来这里是为了找出这两者之间的区别,你能解释一下它们有什么不同吗? (2认同)
  • @安德烈 当在“ for-each”循环的“ select”语句中使用时,它们是相同的。在循环本身中使用`position()`时,它指向结果集。[[n]`格式只能用作速记方式,因为它是`[]`块内的唯一条件,否则必须使用`position()`,如`// a [(@ id =“ xx” )和(position()= 3)]`,它是“ id为xx的任何第五个链接”。 (2认同)