2010-11-24 66 views
8

我在想這樣的方法。 請讓我知道如果這實際上可以以這種方式工作: 對於示例XML:XElement獲取所有子元素節點名稱和值

<Root> 
    <Node> 
    <SubEl1>abc</SubEl1> 
    <SubEl2>def</SubEl2> 
    <SubEl3>123</SubEl3> 
    <SubEl4>456</SubEl4>  
    </Node> 
</Root> 

想進入<Node>,遍歷檢查節點/元素名稱並獲得它的價值。 這樣的事情,比如說名字是'SubEl1',在task1上使用'abc',看到元素名是'SubEl2',我做了task2。所有子元素都必須檢查!

例(不工作密碼):

//looping through 'Node' children 
     switch(SubElName for 'Node element) 
     { 
      case : 'SubEl1' 
      //Do Task1 using the SubEl1's value/TextName ... 
      case: 'SubEl2' 
      //Task2 ... 
      ... 
      case: default //Do default task..... 
     } 
    //end loop 

如果你能想到的任何其他方式(的XElement,XmlDocument的,的SelectNodes()等,這也將被讚賞

回答

12

對於這個任務,它看起來像所有你需要做的僅僅是創建節點名稱的列表/字典和節點的值,然後你可以使用你的開關....

var list = from x in XElement.Load(**yourxmlfile**).Element("Node").Elements() 
      select new 
      { 
       Name = x.Name, 
       Value = (string)x 
      }; 

現在你有一個Name,Value對的列表,你可以直接傳遞給你的switch方法。

+0

向上投票你的解決方案,因爲它實際上提供了實現(= – Adrian 2010-11-24 23:36:18

0

有不提出了利用它,但是還沒有到LINQ XML看起來像各種真棒。這裏有一些聯繫。 MSDN Reference Hooked On LINQ

+0

Linq to XML 各種Awesome。 – 2010-11-24 23:24:45

相關問題