在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;

但是它选择第一个节点并返回它的值!我该如何解决这个问题?

在XML中选择第二个元素的SelectSingleNode在c#中不起作用

您在每个选择的开始处使用// -这意味着"从根开始查找后代节点"(因此上下文无关)。你可以按照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。

相关文章:
  • 没有找到相关文章