Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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# XmlDocument XPath表达式失败_C#_Xpath_Xmldocument - Fatal编程技术网

C# XmlDocument XPath表达式失败

C# XmlDocument XPath表达式失败,c#,xpath,xmldocument,C#,Xpath,Xmldocument,我使用的是C#XMLDocumentAPI 我有以下XML: <Node1> <Node2> <Node3> </Node3> </Node2> </Node1> 根节点.OuterXml的日志 <Node1><Node2><Node3>..... 。。。。。 但是test\u节点返回null 这里出了什么问题?从根节点选择时,请使用

我使用的是C#XMLDocumentAPI

我有以下XML:

<Node1>
    <Node2>
        <Node3>
        </Node3>
    </Node2>
</Node1> 
根节点.OuterXml的日志

<Node1><Node2><Node3>.....
。。。。。
但是
test\u节点
返回null


这里出了什么问题?

从根节点选择时,请使用//而不是/

XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlNode root_node = doc.DocumentElement.SelectSingleNode("/Node1");
XmlNode test_node = root_node.SelectSingleNode("//Node2/Node3");
另一个选项是使用节点3的完整路径

XmlNode test_node = doc.DocumentElement.SelectSingleNode("/Node1/Node2/Node3");

从根节点选择时,请使用//而不是/

XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlNode root_node = doc.DocumentElement.SelectSingleNode("/Node1");
XmlNode test_node = root_node.SelectSingleNode("//Node2/Node3");
另一个选项是使用节点3的完整路径

XmlNode test_node = doc.DocumentElement.SelectSingleNode("/Node1/Node2/Node3");

您可以简单地调用子体()

或者使用
XPathSelectElement()


您可以简单地调用子体()

或者使用
XPathSelectElement()

使用路径
“Node2/Node3”
而不是
“/Node2/Node3”

在XPath表达式中,前导正斜杠
/
表示文档的根。表达式
“/Node2/Node3”
不起作用,因为
不在文档的根。

使用路径
“Node2/Node3”
而不是
“/Node2/Node3”


在XPath表达式中,前导正斜杠
/
表示文档的根。表达式
“/Node2/Node3”
不起作用,因为
不在文档的根目录下。

您试图在这里实现什么?测试节点的作用域是Node3,而不是null。您试图在这里实现什么?测试节点的作用域是Node3,而不是null。
   var node2= doc.Root.Element("Node2").Element("Node3");
 var node3=  doc.XPathSelectElement("/Node1/Node2/Node3");
XmlNode test_node = root_node.SelectSingleNode("Node2/Node3");