使用XmlNode(c#)进行相对XPath选择

时间:2010-05-13 10:54:55

标签: c# xpath

说我有以下xml文件:

<a>
  <b>
    <c></c>
  </b>
  <b>
    <c></c>
  </b>
</a>

var nodes = doc.SelectNodes("/a/b");

将选择两个b节点。

然后我循环这两个节点:

 foreach (XmlNode node in nodes) { }

但是,当我呼叫node.SelectNodes("/a/b/c");时,它仍会返回两个值,而不仅仅是后代。 是否可以选择仅从当前node下降的节点?

3 个答案:

答案 0 :(得分:8)

foreach循环中,您已经知道原始文档中的node/a/b - 因此只需 c孩子们只需使用亲戚 xpath:

node.SelectNodes("c")

答案 1 :(得分:2)

您可以使用node.SelectSingleNode("C");

答案 2 :(得分:1)

/a/b[1]/c

对于intance,获取第一个b中具有标记名c。

的所有子节点的节点列表

要将第一个c作为单个节点列表使用/ a / b [1] / c [1]。 / a / b / c [1]再次返回多个节点的节点列表。

SelectSingleNode可能具有误导性,据我所知,XPath总是返回一个节点列表,它可以包含一个节点(甚至可以是空的)。

// c [1]只选择文档中的第一个c。