XElement pour obtenir tous les noms de noeuds sous-éléments et les valeurs
-
28-09-2019 - |
Question
Je pense à quelque chose comme une approche cela. S'il vous plaît laissez-moi savoir si cela peut effectivement fonctionner de cette façon: XML Exemple:
<Root>
<Node>
<SubEl1>abc</SubEl1>
<SubEl2>def</SubEl2>
<SubEl3>123</SubEl3>
<SubEl4>456</SubEl4>
</Node>
</Root>
Voulez-vous aller dans <Node>
, boucle par chèque pour le noeud / nom de l'élément et obtenir la valeur de lui.
Quelque chose comme cela, le nom de dire est l'utilisation « SubEl1 » « abc » pour Task1, en voyant le nom de l'élément est «SubEl2 Je fais task2. Tous les sous-éléments doivent être vérifiés pour!
Exemple (code de travail non):
//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
Si vous pouvez penser à toute autre approche (XElement, XmlDocument, SelectNodes (), etc., qui sera apprécié aussi!
La solution
Pour cette tâche, il ressemble à tout ce que vous devez faire est de simplement créer une liste / dictionnaire du nom de noeud et la valeur de nœud, vous pouvez alors l'utiliser dans votre commutateur ....
var list = from x in XElement.Load(**yourxmlfile**).Element("Node").Elements()
select new
{
Name = x.Name,
Value = (string)x
};
vous avez maintenant une liste de noms, de valeurs que vous pouvez simplement passer à votre méthode de commutation.
Autres conseils
n'ont pas fait usage encore, mais LINQ pour XML ressemble comme toutes sortes de super. Voici quelques liens. MSDN Référence Hooked On LINQ