Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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# 为selectsecond元素在XML中选择SingleNode在C中不起作用_C#_Xml - Fatal编程技术网

C# 为selectsecond元素在XML中选择SingleNode在C中不起作用

C# 为selectsecond元素在XML中选择SingleNode在C中不起作用,c#,xml,C#,Xml,在以下示例xml代码中,我无法从根元素中选择第二个节点: <?xml version="1.0"?> <config> <FirstNode> <ShowBlahBlah> </ShowBlahBlah> </FirstNode> <SecondNode> <ShowBlahBlah> </ShowBlahB

在以下示例xml代码中,我无法从根元素中选择第二个节点:

<?xml version="1.0"?>
<config>
    <FirstNode>
        <ShowBlahBlah>
        </ShowBlahBlah>
    </FirstNode>
    <SecondNode>
        <ShowBlahBlah>
        </ShowBlahBlah>
    </SecondNode>
</config>
但它会选择第一个节点并返回其值! 如何解决此问题?

您在每个选择的开头都使用了//这意味着上下文无关。您可以按照Jeffrey的回答一步到位,也可以使用相对路径:

doc.SelectSingleNode("config")
   .SelectSingleNode("SecondNode")
   .SelectSingleNode("ShowBlahBlah")
就我个人而言,如果可能的话,我会使用LINQ到XML:

var doc = XDocument.Parse(sReadXml);
var changes = doc.Root.Element("SecondNode").Element("ShowBlahBlah");

LINQ to XML通常比XmlDocument等更干净。

另外,您是否必须使用XPath和XmlDocument?LINQ to XML倾向于使这类事情更简单……XmlNode sChangesLog=doc.SelectSingleNodeconfig/SecondNode/ShowBlahBlah;
var doc = XDocument.Parse(sReadXml);
var changes = doc.Root.Element("SecondNode").Element("ShowBlahBlah");