我在以下示例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;
但它选择第一个节点并返回其值! 我该如何解决这个问题?
答案 0 :(得分:0)
您在每个选择的开头都使用//
- 这意味着"find descendant nodes starting at the root"(因此上下文无关紧要)。根据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通常是一个很多更清洁的API,而不是XmlDocument
等。