2016-05-16 7 views
1

XMLを読み込み、ノード名と属性値を辞書項目として返す汎用メソッドを作成しようとしています。xmlから辞書項目を作成するにはどうすればよいですか?

私は構文を使いこなしてきましたが、それを正しく理解することはできません。 私はここで何が欠けていますか?

は現在、私は持っている:

XElement doc = XElement.Load(dataStream); 
var item = from el in doc.Descendants() 
      where el.Attribute(attributeName) != null 
      select new 
      { 
       Name = el.Name.LocalName, 
       Value = el.Attribute(attributeName).Value 
      }.ToDictionary(o => o.Name, o => o.Value); 

答えて

2

あなたは括弧であなたのLINQクエリをラップする必要があります。

public void Test() 
{ 
    const string attributeName = "name"; 
    XElement doc = XElement.Parse(@"<xml><elem id=""1"" /><anotherElem name=""test"" /></xml>"); 
    var items = (from el in doc.Descendants() 
     where el.Attribute(attributeName) != null 
     select new 
     { 
      Name = el.Name.LocalName, 
      Value = el.Attribute(attributeName).Value 
     }).ToDictionary(o => o.Name, o => o.Value); 

    Assert.AreEqual(1, items.Count); 
    Assert.AreEqual(true, items.ContainsKey("anotherElem")); 
    Assert.AreEqual("test", items["anotherElem"]); 
} 
+0

私はちょうど私の答えを投稿するつもりでした。私は質問をラップするのを忘れていたことに気付かなかった。 – PrivateJoker

関連する問題