2016-05-07 10 views
0

私は非常に長いxmlファイルを持っており、そのXMLファイル内の別個のTagNameが何であるかを特定する必要があります。 XmlDocumentライブラリを使用してC#アプリケーションで取得できるのだろうかと思います。この例では、XMLでC#を使用してXML TagNameの別のリストを取得できますか?

、私はすべてのTagNameを見つけたい:書店、書籍のジャンル、タイトル、最初の名前

<bookstore> 
    <book genre="novel"> 
    <title>The Autobiography of Benjamin Franklin</title>  
    </book> 
    <book genre="novel"> 
    <title>The Confidence Man</title> 
    <first-name>Herman</first-name> 
    </book> 
</bookstore> 

答えて

0

XDocumentとしてそれを解析し、あなたがこれを行うことができます:

var names = doc.Descendants().Select(e => e.Name.LocalName).Distinct(); 
をあなたが使用する必要がある場合はそれ以外の場合は

bookstore 
book 
title 
first-name 

これはあなたに(いくつかの順序で)結果が得られます

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

あなたは明確な名前を取得するためにHashSetを使用することができます。XmlDocument、あなたはこれを行うことができます。さらに、それは非常に高速です。

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); 
関連する問題