唯一节点和c#

时间:2013-08-22 15:03:41

标签: c# xml dom xmlnode

在c#中有一种很好的方法可以使用DOM查看XML节点列表,并获取仅包含唯一节点的节点列表,以及每个节点唯一可能属性的列表。

有问题的XMl文件具有相同名称但具有不同属性的节点,我想要一个包含所有可能节点的列表。此外,我希望节点列表只是唯一的节点,而不是重复节点(因此我现在生成的节点列表可能有两次联系,其中有三次接触)。它需要适用于任何XML文档。有什么想法吗?

以下是一个例子:

 <book id="bk112">
  <author>Galos, Mike</author> 
  <title>Visual Studio 7: A Comprehensive Guide</title> 
  <genre>Computer</genre> 
  <price>49.95</price> 
  <publish_date>2001-04-16</publish_date> 
 </book>
 <book id="bk162">
  <genre>fiction</genre> 
  <popularity>High</popularity> 
  <price>20.00</price> 
  <publish_date>2002-03-12</publish_date> 
 </book>
 <cd id="bk162">
  <genre>jaz</genre> 
  <popularity>High</popularity> 
  <price>10.00</price>
 </cd>

并获得某种输出,如:

there are 2 of the type book
there are 1 of the type cd
there are 3 of the type genre 
book may have the attributes author, title, genre, price, popularity, publish_date

但以某种方式适用于任何xml文件。

在类型的情况下,它不需要以任何方式成为celver,只知道文档中有3个类型节点。

1 个答案:

答案 0 :(得分:0)

会这样做吗?

XDocument xDoc = XDocument.Load("XMLFile1.xml");
List<XElement> distinctDocs = xDoc.Descendants().GroupBy(x => x.Name).Where(x => x.Count() == 1).Select(g => g.Single()).ToList();