XPathNavigator.Select(“self :: node()/../ .. [@ numberOfLocationsAdded!='0']”)

时间:2012-04-06 00:10:06

标签: .net xpath xpathnavigator

当我调用XPathNavigator.Select(“self :: node()/../ .. [@ numberOfLocationsAdded!='0']”)时,我得到“有无效令牌”的例外

这是因为XPathNavigator无法超越它所在的根目录吗?如果是的话,有关如何最好地处理这种情况的任何建议吗?

当用户设置要迭代的节点时,我们调用select并获取XPathNodeIterator。
然后,对于每次迭代,我们调用XPathNodeIterator.Current,它为我们所在的节点提供XPathNavigator。

然后,对于XPath选择我们所在的节点,调用XPathNavigator.Select()

有没有办法有效地做到这一点?或者,如果我们需要支持../ ..我们是否需要总是在根节点上工作并在它们想要迭代的节点前面添加XPath?

谢谢 - 戴夫

1 个答案:

答案 0 :(得分:1)

这在XPath 1.0中语法无效

..[condition]

使用

self::node()/../../self::*[@numberOfLocationsAdded!='0']

或等同物和更短的:

../parent::*[@numberOfLocationsAdded!='0']