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