XElement для получения всех имен и значений узлов подэлементов

Я думаю о подходе что-то вроде этого. Пожалуйста, дайте мне знать, если это действительно может работать следующим образом: для примера 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 ответа

Решение

Для этой задачи похоже, что все, что вам нужно сделать, это просто создать список / словарь имени узла и значения узла, затем вы можете использовать это в своем переключателе....

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

теперь у вас есть список пар "имя-значение", которые вы можете просто передать методу переключения.

Используйте http://msdn.microsoft.com/de-de/library/bb342765.aspx чтобы получить всех детей, и http://msdn.microsoft.com/de-de/library/system.xml.linq.xelement.name.aspx чтобы проверить имя.

Я еще не использовал его, но LINQ to XML выглядит как все офигенное. Вот несколько ссылок. Ссылка MSDN подключена к LINQ

Другие вопросы по тегам