如何使用C#和XML获取根元素的直接子元素?

时间:2011-04-25 06:46:54

标签: c# .net xml .net-4.0

 <Document>
    <Heading1>
         <text>Heading Title</text>   
         <para>para1</para>
         <para>para2</para>
         <para>para3</para>
     </Heading1>
    <Heading1>
         <text>2nd Heading Title</text>   
         <para>para4</para>
         <para>para5</para>
         <para>para6</para>
         <Heading2>
              <text>3rd Heading Title</text>   
              <para>para4</para>
              <para>para5</para>
         </Heading2>       
     </Heading1>
 </Document>

这是XML文档。现在,我想使用C#(4.0)解析此XML文件。在这里,我希望在我的程序中不使用该元素名称来获取所有Heading1元素。例如,不要使用document.GetElementsByTagName("Heading1");。我怎么弄它。指导我摆脱这个问题。

谢谢&amp;问候。

3 个答案:

答案 0 :(得分:3)

使用LINQ to XML,您可以:

var headings = yourXDocument.Root.Elements();

使用Nodes()代替Elements()也会返回文字节点和评论,这显然不是您想要的。

答案 1 :(得分:2)

如果使用LINQ to XML,则可以通过Elements()方法访问文档或元素的子元素。

XDocument doc = ...;

var query = doc.Root.Elements();

答案 2 :(得分:1)

如果您使用XmlDocument,则可以:

var elements = doc.SelectNodes("/*/*");

查找顶级元素的所有子元素,而不管其名称是什么。如果您知道名称通常更安全,那么具有意外名称的元素不会在您的列表中返回 - 使用/Document/Heading1来执行此操作。