Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
唯一节点与c#_C#_Xml_Dom_Xmlnode - Fatal编程技术网

唯一节点与c#

唯一节点与c#,c#,xml,dom,xmlnode,C#,Xml,Dom,Xmlnode,在c#中是否有一种好方法可以使用DOM查看XML节点列表,并获得仅包含唯一节点的节点列表以及每个节点唯一的可能属性的列表 所讨论的XMl文件具有相同名称但具有不同属性的节点,我想要一个所有可能节点的列表。另外,我希望节点列表只是唯一的节点,而不是重复的节点(因此我现在生成的节点列表中可能有两次、三次联系人)。它需要适用于任何XML文档。有什么想法吗 以下是一个例子: <book id="bk112"> <author>Galos, Mike</author&g

在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>
但以一种适用于任何xml文件的方式

就类型而言,它在任何方面都不需要是celver,只要知道文档中有3个类型节点即可。

这样做可以吗

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();
XDocument xDoc=XDocument.Load(“XMLFile1.xml”);
列出distinctDocs=xDoc.substands().GroupBy(x=>x.Name)。其中(x=>x.Count()==1)。选择(g=>g.Single()).ToList();

示例xml和预期输出,当然还有您尝试过的内容?请参阅
HtmlAgilityPack
IEqualityComparer
。您能否发布一个示例xml以使您的问题更清楚?什么是独一无二的?如果一个联系人节点出现在XML文档的不同级别上,它仍然是重复的吗?不要这样认为,除非我遗漏了什么。我直到现在才知道节点的名称runtime@user2707220此解决方案不要求您在运行时拥有任何名称。为什么不运行它,设置断点,然后检查
distinctDocs
var@user2707220我编辑了我的答案以避免类型混淆。使用系统进行测试;xDocument和XElement还没有被识别吗?@user2707220
使用System.Xml.Linq
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();