检查xml节点是否包含子子节点

时间:2012-08-09 10:17:12

标签: c# xml xpath

有没有办法检查我正在寻找的节点,XPATH是否包含子节点?

我有一个xml文件,某个特定节点有时会有子节点,有时则不会!如何检查这个,所以我不会得到太多NullReferenceExceptions!?

检查以下示例:

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

如果我正在使用的当前xml文件确实Test内的Tests节点工作正常,但在另一个xml文件中,Tests节点不包含任何内容,它是只是因为没有明显的原因!?

XPATH中是否有命令执行此操作?就像是!! :

"/Document/Tests[NodeExist(Test)]

3 个答案:

答案 0 :(得分:4)

/Document/Tests[Test]会为您提供仅Tests节点作为孩子的Test个节点。

您还可以针对/Document/Tests运行选择,然后调用element.GetElementsByTagName("Test").Count > 0以确保至少有一个Test节点。这样,您可以以编程方式显示空字符串或错误消息,无异常。

答案 1 :(得分:1)

是您可以使用以下xpath “/文件/测试[节点()]” 这将为您提供具有子节点的所有测试节点。您可以进一步改进以提供节点名称以及nodetype。

如果您希望具有名为Test的子节点的特定节点 用这个 “/文件/测试[测试]”

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

答案 2 :(得分:0)

一个真正快速的谷歌给出了这个:

/Document/Tests/not(*)