检查一个XML节点是否包含子节点

5

有没有一种方法可以使用 XPATH 检查我正在查找的节点是否包含子节点?

我有一个 XML 文件,其中特定的节点有时具有子节点,有时则没有!如何检查这一点,以便我不会收到太多的 NullReferenceExceptions!?

请查看下面的示例:

var text = xml.SelectSingleNode("/Document/Tests/Test").InnerText;

如果我正在处理的当前xml文件中 Tests 内有 Test 节点,那么它是正常工作的,但在另一个xml文件中, Tests 节点不包含任何内容,仅仅是没有明显的原因而存在!?是否有XPATH命令可以做到这一点?类似以下命令!!:"/Document/Tests[NodeExist(Test)]
3个回答

4

/Document/Tests[Test] 将会返回只有一个 Test 作为子节点的 Tests 节点。

你也可以对 /Document/Tests 进行选择,然后在稍后调用 element.GetElementsByTagName("Test").Count > 0 来确保至少有一个 Test 节点。这样,你可以以编程方式显示一个空字符串或错误消息,而不会出现异常。


1

是的,您可以使用以下xpath:"/Document/Tests[node()]"。这将为您提供所有具有子节点的测试节点。您还可以进一步改进,以在那里给出节点名称和节点类型。

如果您想要具有名为Test的子节点的特定节点,请使用此命令:"/Document/Tests[Test]"

您可以在MSDN中找到更多示例http://msdn.microsoft.com/en-us/library/ms256086.aspx


0
一个真正快速的谷歌搜索给了这个:
/Document/Tests/not(*)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接