2010-11-24 73 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

相关问题