在XML中选择第二个元素的SelectSingleNode在c#中不起作用
本文关键字:SelectSingleNode 不起作用 第二个 XML 选择 元素 | 更新日期: 2023-09-27 18:06:44
我在以下示例xml代码中从根元素选择第二个节点有问题:
<?xml version="1.0"?>
<config>
<FirstNode>
<ShowBlahBlah>
</ShowBlahBlah>
</FirstNode>
<SecondNode>
<ShowBlahBlah>
</ShowBlahBlah>
</SecondNode>
</config>
并使用c#代码选择SecondNode:
XmlDocument doc = new XmlDocument();
doc.LoadXml(sReadXML);
XmlNode sChangesLog = doc.SelectSingleNode("config").SelectSingleNode("//SecondNode").SelectSingleNode("//ShowBlahBlah")
XmlNodeList sChildNodes = sChangesLog.ChildNodes;
但是它选择第一个节点并返回它的值!我该如何解决这个问题?
您在每个选择的开始处使用//
-这意味着"从根开始查找后代节点"(因此上下文无关)。你可以按照Jeffrey的回答一步完成,或者使用相对路径:
doc.SelectSingleNode("config")
.SelectSingleNode("SecondNode")
.SelectSingleNode("ShowBlahBlah")
如果可能的话,我个人会使用LINQ to XML:
var doc = XDocument.Parse(sReadXml);
var changes = doc.Root.Element("SecondNode").Element("ShowBlahBlah");
LINQ to XML通常是一个比XmlDocument
等更干净的API。