c# – 获取特定类型的所有XML元素:甚至嵌套元素

我在C#ASP.NET中解析XML文档.有没有我不知道的方法/功能来获得标签“课程”的所有元素?

XML的格式如下:

<a>
  <g1>
    <course></course>
    <g9>
      <course></course>
      ... more course elements
    </g9>
    <course></course>
    <g2>
      <g3>
        <course></course>
        ...
      </g3>
    </g2>
  </g1>
</a>

当我执行以下代码时,我没有找到“课程”元素,是否有一个简单的函数可以一次性获取所有这些元素?

XmlDocument xdoc = new XmlDocument();
xdoc.Load("http://kjkjkj.com");
XmlNodeList list = xdoc.DocumentElement.SelectNodes("course");

// if I debug: list.count = 0 but if I look at xdoc.DocumentElement.outerXml 
// its the correct XML so I did parse the file & get XML contents.

// Is there any C# equivalent of document.getElementsByTagName("course"); ???
最佳答案
你很亲密:

XmlNodeList list = xdoc.DocumentElement.SelectNodes("//course");

使用//进行前缀将获取文档中名为course的所有节点,无论它们位于何处.

作为替代方案,您应该考虑使用Linq to Xml解析XML,它可以很好地与Linq集成到对象.有相同的语法

var courses  = xdoc.Descendants("course");

转载注明原文:c# – 获取特定类型的所有XML元素:甚至嵌套元素 - 代码日志