有没有办法检查我正在寻找的节点,XPATH
是否包含子节点?
我有一个xml文件,某个特定节点有时会有子节点,有时则不会!如何检查这个,所以我不会得到太多NullReferenceExceptions!?
检查以下示例:
var text = xml.SelectSingleNode("/Document/Tests/Test").InnerText;
如果我正在使用的当前xml文件确实Test
内的Tests
节点工作正常,但在另一个xml文件中,Tests
节点不包含任何内容,它是只是因为没有明显的原因!?
XPATH中是否有命令执行此操作?就像是!! :
"/Document/Tests[NodeExist(Test)]
答案 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(*)