J'ai un document XML qui va comme ceci:Comment puis-je obtenir tous les sous-nœuds d'un nœud avec certains attributs?
<Menu>
<Category name="Comida Rapida">
<Food cocina="si">
<Name>Haburguesa</Name>
<Price>10</Price>
</Food>
<Food>
<Name>Papas Fritas</Name>
<Price>20</Price>
</Food>
</Category>
<Category name="Bebidas">
<Food>
<Name>Pepsi</Name>
<Price>30</Price>
</Food>
<Food cocina="si">
<Name>Coca Cola</Name>
<Price>40</Price>
</Food>
</Category>
</Menu>
Ce que je veux faire est de passer par chaque <Category>
vérifier si l'attribut est ce que je dois, par exemple « Bebidas », donc la partie que je suis intéressé est:
<Food>
<Name>Pepsi</Name>
<Price>30</Price>
</Food>
<Food cocina="si">
<Name>Coca Cola</Name>
<Price>40</Price>
</Food>
maintenant que je ce que je veux faire quelque chose de semblable à ce que je l'ai déjà fait:
Je veux d'abord imprimer tous:
Pepsi 30
Coca Cola 40
Et je veux imprimer seulement ceux que la nourriture avait l'attribut cocina="si"
, donc:
Coca Cola 40
J'ai donc diverses questions:
d'abord tout ce qui approche à utiliser, je Je suis confus par l'abondance des méthodes et des implémentations possibles: XmlDocument, XmlReader, XmlTextReader, etc
De this question Je rassemble XmlDocument est le plus facile à utiliser, ce serait génial, le plus simple, e mieux que je suis tout à fait nouveau à l'analyse des fichiers Xml que vous pouvez apprécier.
Maintenant à la mise en œuvre réelle, j'ai essayé toutes sortes de choses avec pas beaucoup de succès, je semble être en mesure de faire certaines parties, mais pas tous ensemble.
XmlNodeList elemList = doc.GetElementsByTagName("Category");
for (int i = 0; i < elemList.Count; i++)
{
Console.WriteLine(elemList[i].InnerXml);
}
Affichera:
<Food><Name>Haburguesa</Name><Price>10</Price></Food><Food><Name>Papas Fritas</Name><Price>20</Price></Food>
<Food><Name>Pepsi</Name><Price>30</Price></Food><Food><Name>Coca Cola</Name><Price>40</Price></Food>
Ce qui est logique, mais maintenant, comment puis-je vérifier si la catégorie a l'attribut name="cocina"
?
Je devine que quelque chose comme cela pourrait aider:
for (int j = 0; j < elemList[i].Attributes.Count; j++)
{
//??
}
Mais je ne peux pas trouver quelque chose comme MoveToAttribute()
dans XmlTextReader.
Et puis encore, comment puis-je vérifier si l'attribut cocina="si"
?
Merci, j'essaie! – Trufa
J'ai pris la liberté et changé le format pour Format. – Trufa
J'ai une question cependant, je ne sais pas comment utiliser 'results'. Ne devrait pas un simple pour chaque faire? Aussi, si je lis d'un fichier, je devrais utiliser XDocument.Load() non? – Trufa