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

Los*_*der 7 c# xelement xmldocument selectnodes

我正在考虑这样的方法.如果这实际上可以这样工作,请告诉我:对于示例XML:

<Root>
  <Node>
    <SubEl1>abc</SubEl1>
    <SubEl2>def</SubEl2>
    <SubEl3>123</SubEl3>
    <SubEl4>456</SubEl4>      
  </Node>
</Root>
Run Code Online (Sandbox Code Playgroud)

想要进入<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
Run Code Online (Sandbox Code Playgroud)

如果你能想到任何其他方法(XElement,XmlDocument,SelectNodes()等,那也将受到赞赏!

Tim*_*vis 11

对于此任务,您只需要创建节点名称和节点值的列表/字典,然后您可以在交换机中使用它.

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

现在您有一个名称,值对的列表,您可以简单地传递给您的switch方法.