我有一个非常长的xml文件,我需要确定该xml文件中的不同TagName。我想知道我是否可以使用XmlDocument库在我的C#应用程序中获取它。
在这个例子xml中,我想找到所有的TagName:书店,书籍类型,标题,名字
<DETAIL>
答案 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);