【问题标题】:XElement to get all sub-element node names and valuesXElement 获取所有子元素节点名称和值
【发布时间】:2011-05-15 09:59:31
【问题描述】:

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

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

想要进入&lt;Node&gt;,循环检查节点/元素名称并获取它的值。 像这样,说名称是'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() 等,也将不胜感激!

【问题讨论】:

    标签: c# xmldocument xelement selectnodes


    【解决方案1】:

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

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

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

    【讨论】:

    • 对您的解决方案投了赞成票,因为它实际上提供了实现 (=
    • 谢谢它也可以使用开关!我知道 LINQ 很棒,但语法需要时间来适应。你一定是个天才。
    • :-) 不,不是天才。只需稍加练习即可习惯语法……不过,学习曲线确实值得。
    【解决方案2】:

    尚未使用它,但 LINQ to XML 看起来非常棒。这里有一些链接。 MSDN Reference Hooked On LINQ

    【讨论】:

    • Linq to XML 各种很棒的。
    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多