5

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

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

检查以下示例:

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

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

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

"/Document/Tests[NodeExist(Test)]

4

3 回答 3

4

/Document/Tests[Test]将为您Tests提供只有一个Test节点作为子节点的节点。

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

于 2012-08-09T10:28:33.730 回答
1

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

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

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

于 2012-08-09T10:25:05.267 回答
0

A real quick Google gave this:

/Document/Tests/not(*)
于 2012-08-09T10:20:32.447 回答