7

我正在考虑这样的方法。请让我知道这是否真的可以这样工作:对于示例 XML:

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

想要进入<Node>,循环检查节点/元素名称并获取它的值。像这样,说名称是'SubEl1' 使用'abc' 作为task1,看到元素名称是'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() 等,那也将不胜感激!

4

3 回答 3

12

对于这个任务,看起来你需要做的只是创建一个节点名称和节点值的列表/字典,然后你可以在你的开关中使用它......

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

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

于 2010-11-24T23:34:16.183 回答
0

使用http://msdn.microsoft.com/de-de/library/bb342765.aspx获取所有孩子和http://msdn.microsoft.com/de-de/library/system.xml.linq.xelement.name .aspx检查名称。

于 2010-11-24T23:19:09.180 回答
0

还没有使用它,但是 LINQ to XML 看起来非常棒。这里有一些链接。 与 LINQ 挂钩的MSDN 参考

于 2010-11-24T23:14:43.407 回答