使用XElement获取所有子元素节点名称和值

7
我正在考虑一种类似于这样的方法。如果这种方法实际可行,请告诉我: 对于示例 XML:
<Root>
  <Node>
    <SubEl1>abc</SubEl1>
    <SubEl2>def</SubEl2>
    <SubEl3>123</SubEl3>
    <SubEl4>456</SubEl4>      
  </Node>
</Root>

想要进入 <Node>,循环检查节点/元素名称并获取其值。 类似这样,假设名称为 'SubEl1',则使用 'abc' 完成任务1,在看到元素名称为 'SubEl2' 时执行任务2。所有子元素都必须进行检查!
示例(非工作代码):
 //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()等),那也将不胜感激!
3个回答

12

对于这个任务,看起来你只需要简单地创建一个节点名称和节点值的列表/字典,然后在switch语句中使用它....

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

现在你有一个名称和值对的列表,可以直接传递给你的switch方法。


我已经为你的解决方案点赞,因为它实际上提供了实现。 - Adrian
谢谢,它可以工作了,我只是用了switch!我知道LINQ很好,但语法需要时间去适应。你一定是个天才。 - Loser Coder
不,不是天才。只需要一点练习就可以熟悉语法...虽然学习曲线有点陡峭,但真的值得。 - Tim Jarvis

0

Linq to XML是非常棒的。 - Tim Jarvis


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接