2012-02-24 96 views
4

我在C#ASP.NET中解析XML文档。有没有一种方法/功能,我不知道要获得标签“课程”的所有元素?抓取特定类型的所有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"); ??? 
+0

请不要用“C#”等标题加前缀。这就是标签的用途。 – 2012-02-24 03:56:39

回答

7

你接近:

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

//,前缀将抓住所有命名course,无论身在何处,他们在文档中的节点。

作为一种替代方案,您应该考虑使用Linq解析您的XML,将Xml与Linq很好地集成到对象中。同样的语法也有

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