Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XPath表达式中的点与斜杠_C#_Xml_Xpath - Fatal编程技术网

C# XPath表达式中的点与斜杠

C# XPath表达式中的点与斜杠,c#,xml,xpath,C#,Xml,Xpath,我遇到了一个不寻常的问题。我有以下XML: <T durationMs="400"> <foo durationMs="407"> <foo-child durationMs="307" /> </foo> <bar durationMs="208"> <bar-child durationMs="108" /> </bar> </T> var xe = XEleme

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

<T durationMs="400">
  <foo durationMs="407">
    <foo-child durationMs="307" />
  </foo>
  <bar durationMs="208">
    <bar-child durationMs="108" />
  </bar>
</T>
var xe = XElement.Parse(s);
var foo = xe.XPathSelectElement("/T/foo")
它什么也不返回。但是,如果我使用:

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

它得到一个元素。那么在这种情况下,点和斜杠有什么区别呢?

选择当前节点

/
从根节点选择

/
从当前节点选择文档中与所选内容匹配的节点,无论它们位于何处

让您简要了解如何进行选择



在您的情况下,
/foo
表示从根节点进行选择,即,
T
选择当前节点

/
从根节点选择

/
从当前节点选择文档中与所选内容匹配的节点,无论它们位于何处

让您简要了解如何进行选择



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

因此,使用
/T/foo
它试图匹配
T->T->foo
,而这肯定不会匹配

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


/foo
将起作用

/
根节点选择

因此,使用
/T/foo
它试图匹配
T->T->foo
,而这肯定不会匹配

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


/foo
会有用的

我明白了!XDocument应该是使用根的东西,对吗?@Schultz9999看看我明白了!XDocument应该是使用根的东西,对吗?@Schultz9999看一看