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

本文关键字:元素 获取 何使用 XML | 更新日期: 2023-09-27 17:52:59

 <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");。我是怎么得到的。请引导我解决这个问题。

谢谢,问候。

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

使用LINQ to XML,您可以:

var headings = yourXDocument.Root.Elements();

使用Nodes()代替Elements()也会返回文本节点和注释,这显然不是你想要的。

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

XDocument doc = ...;
var query = doc.Root.Elements();

如果你使用的是XmlDocument,这是有效的:

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

查找顶级元素的所有子元素,而不管它们的任何名称。如果您知道名称,则指定名称通常更安全,这样具有意外名称的元素就不会在列表中返回-使用/Document/Heading1来完成此操作。