26

我想选择不存在特定属性的节点。我试过 Not() 函数,但它不起作用。有办法吗?

示例:以下 Xpath 查询:

group/msg[not(@owner)]

应该检索第一个节点而不是第二个节点。但是,SketchPath(测试 Xpath 查询的工具)和我的 C# 代码都认为这两个节点都可以。

<group>
    <msg id="EVENTDATA_CCFLOADED_XMLCONTEXT"  numericId="14026"  translate="False"  topicId="302"  status="translated" >
        <text>Context</text>
        <comment></comment>
    </msg>
    <msg id="EVENTDATA_CCFLOADED_XMLCONTEXT_HELP"  numericId="14027"  translate="False"  topicId="302"  status="translated"  owner="EVENTDATA_CCFLOADED_XMLCONTEXT" >
        <text>Provides the new data displayed in the Object.</text>
        <comment></comment>
    </msg>
</group>

事实上 Not() 函数工作正常,只是我有其他条件和括号没有正确设置。人为错误

4

2 回答 2

17

string-length(@attr)=0出于同样的原因,我不得不在一些旧的且不是很标准的 XPath 引擎中使用它。

于 2008-12-12T15:06:31.907 回答
1

在使用XPath Explorer(基于Jaxen库)进行测试时为我工作。
所以我想这确实取决于 XPath 的实现。

于 2008-12-12T15:27:52.380 回答