Xelement para obter todos os nomes e valores dos nó subelementos
-
28-09-2019 - |
Pergunta
Estou pensando em uma abordagem algo assim. Informe -me se isso pode realmente funcionar da seguinte maneira: para a amostra XML:
<Root>
<Node>
<SubEl1>abc</SubEl1>
<SubEl2>def</SubEl2>
<SubEl3>123</SubEl3>
<SubEl4>456</SubEl4>
</Node>
</Root>
Quero entrar em <Node>
, loop até a verificação do nome do nó/elemento e obtenha seu valor. Algo assim, digamos, o nome é 'subel1' use 'ABC' para a tarefa1, ao ver o nome do elemento 'subel2' Eu faço Task2. Todos os subelementos devem ser verificados!
Exemplo (não o código de trabalho):
//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
Se você consegue pensar em qualquer outra abordagem (Xelement, Xmldocument, selectNodes () etc., isso também será apreciado!
Solução
Para esta tarefa, parece que tudo o que você precisa fazer é simplesmente criar uma lista/dicionário do nome do nó e do valor do nó, então você pode usá -lo no seu interruptor ....
var list = from x in XElement.Load(**yourxmlfile**).Element("Node").Elements()
select new
{
Name = x.Name,
Value = (string)x
};
Agora você tem uma lista de nome, pares de valor que você pode simplesmente passar para o seu método de troca.
Outras dicas
Ainda não fiz um uso disso, mas o Linq para XML parece todos os tipos de incríveis. Aqui estão alguns links.Referência do MSDN Viciado no Linq
usar http://msdn.microsoft.com/de-de/library/bb342765.aspx Para conseguir todas as crianças e http://msdn.microsoft.com/de-de/library/system.xml.linq.xelement.name.aspx Para verificar o nome.