我可以使用C#获取XML TagName的独特列表吗?

时间:2016-05-07 02:51:32

标签: c# xml parsing xml-parsing tags

我有一个非常长的xml文件,我需要确定该xml文件中的不同TagName。我想知道我是否可以使用XmlDocument库在我的C#应用​​程序中获取它。

在这个例子xml中,我想找到所有的TagName:书店,书籍类型,标题,名字

<DETAIL>

2 个答案:

答案 0 :(得分:0)

将其解析为XDocument,你可以这样做:

var names = doc.Descendants().Select(e => e.Name.LocalName).Distinct();

这将为您提供结果(按某种顺序):

bookstore 
book 
title 
first-name 

否则,如果您必须使用XmlDocument,则可以执行此操作:

var names =  doc.DocumentElement
    .SelectNodes("//*").Cast<XmlNode>()
    .Select(e => e.LocalName)
    .Distinct();

答案 1 :(得分:0)

您可以使用HashSet获取不同的名称。而且,它非常快。

var doc = XDocument.Load("test.xml");
var set = new HashSet<string>();

foreach (var node in doc.Descendants())
{
    set.Add(node.Name.LocalName);

    foreach (var attr in node.Attributes())
        set.Add(attr.Name.LocalName);
}

foreach (var name in set)
    Console.WriteLine(name);
相关问题