XPath表达式中的点与斜杠

时间:2013-04-18 18:40:12

标签: c# xml xpath

我遇到了一个不寻常的问题。我有这个XML:

<T durationMs="400">
  <foo durationMs="407">
    <foo-child durationMs="307" />
  </foo>
  <bar durationMs="208">
    <bar-child durationMs="108" />
  </bar>
</T>

我正在使用XPathExtentions从这个XML中获取XElement:

var xe = XElement.Parse(s);
var foo = xe.XPathSelectElement("/T/foo")

它什么都不返回。但是,如果我使用:

var foo = xe.XPathSelectElement("./foo")

它有一个元素。那么在这种情况下,点和斜线之间的区别是什么?

2 个答案:

答案 0 :(得分:3)

/root节点中选择。

因此,/T/foo尝试匹配T->T->foo,但肯定不匹配

.描述当前节点,在这种情况下它将是根节点

/foo可行

答案 1 :(得分:1)

.选择当前节点。

/从根节点中选择。

//从当前节点中选择与选择匹配的文档中的节点,无论它们在何处。

XPath Syntax简要介绍了如何完成选择


在您的情况下,./foo表示从根节点选择,即T