所以要展开...
我有一些 XML
<root>
<list>
<item value="9"/>
<item value="3"/>
<item value="1"/>
<item value="8"/>
<item value="4"/>
</list>
</root>
我有一个 XPath“/root/list/item [4]”,我相信它将检索第 5 个“item”元素(其 value 属性为 4)
这表明 XPath "/root/list/item [5]" 将引用(尚不存在的)第 6 项。
我想要的是一个 XPath 表达式,它将引用“下一个”(尚不存在)“项目”元素,而不管当前有多少项目......
我假设这将传递一个表达式(它将计算当前元素的数量)而不是硬编码的数字。
我知道我会怎么做,但根本找不到我应该怎么做……令人沮丧。
更新:澄清......我想返回“最后一个项目节点之后的项目节点”。这些属性只是为了区分现有节点)。我很欣赏这将返回一个空的节点集。
更新:嗯,我有我的答案,所以我想这是公平的,我解释了为什么我想要这个:)
基本上xPath被一些.Net代码用作写地址而不是读地址。
我将不存在位置的 xPath 传递给 EnsureNodeExists 例程。(注意:我无法更改此 EnsureNodeExists 例程)代码将迭代 xPath 的每个元素,如果不存在则创建它,然后将其设置为下一次迭代的父级。
因此,我可以使用“/root/list/item[position() = last()]/following-sibling::item[1]” 3 次调用此代码,这将导致创建 3 个项目节点。