C# 如何在XPath中搜索空/空节点/元素?

C# 如何在XPath中搜索空/空节点/元素?,c#,.net,xml,xpath,xpath-1.0,C#,.net,Xml,Xpath,Xpath 1.0,我有下面的XML示例,我需要一个XPath查询来仅返回node1和node3 <root> <node1 /> <node2 anyAttribute="anyText" /> <node3> </node3> <node4>anyText</node4> <node5> <anyChildNode /> </node5

我有下面的XML示例,我需要一个XPath查询来仅返回
node1
node3

<root>
    <node1 />
    <node2 anyAttribute="anyText" />
    <node3> </node3>
    <node4>anyText</node4>
    <node5>
        <anyChildNode />
    </node5>
</root>

任意文本
&)但一次仅适用于上述一点:

  • 1<代码>/root/node()[非(node())]
-已测试并正常工作
  • 两个人<代码>/root/node()
  • 三个人
    /root/node()[字符串长度(规范化空格(text())=0]
    -不工作(不知道为什么)
  • 是的,我知道,我可以同时使用上面的3个变体,但我想避免它,我认为只搜索空节点/元素应该有一种简单的方法,或者


    我还限于
    .NET
    上的
    xPath 1.0
    ,因为它支持较新的版本

    /root/*[not(@* or * or text()[normalize-space()])]
    
    将根据请求仅选择
    node1
    node3

    说明:
    选择
    root
    的所有元素(注意与节点的差异)子元素,这些子元素没有属于属性(
    @*
    )或元素(
    *
    )或非空白文本(
    text()[normalize-space()]
    )的子元素。

    +1可以正常工作;我想使用
    node()
    会比
    *
    快,但似乎我把它和“\\\”混淆了。