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