Lire plusieurs attribut dans node.element de XML [Résolu]

cs_bisoubebe 5 Messages postés lundi 25 août 2008Date d'inscription 28 août 2008 Dernière intervention - 26 août 2008 à 16:25 - Dernière réponse : cs_bisoubebe 5 Messages postés lundi 25 août 2008Date d'inscription 28 août 2008 Dernière intervention
- 28 août 2008 à 21:15
Bonjour,
j'ai essayé de fouiller dans le site mais pas de solution.
Probleme: je veux lire les attributs de certains elements de mon fichier XML
mais il ne lit que le premier elt et et le deuxième non car 0attribut, pourquoi je ne sais
pas , voici mon code et mersi d'avance pour votre aide.

xmltextreader tx;
while (tx.read())
{
      switch (tx.name)
      { 
          case "toto"
               string name= tx.getattribute("name");
                string mark = tx.getattribut("mark";);
            break;
      }
}
et mon XML est réprésenter par exemple comme ceci:
<toto name= "test1" mark "euro">
</toto>
<toto name = "test2" mark "Dm">
</toto>
je veux qu'il me renvoi le nom et le mark pour les deux cas
de toto, mais il renvoie bien au premier tour, maus au deuxième 
tx.read à 0 attribut. je ne sais pas pourquoi, et mersi de m'aider 
mersi
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 26 août 2008 à 16:58
3
Merci
Bonjour,

C'est normal que ton deuxième passage renvoie rien car le 'switch() case "toto"' s'arrête aussi sur l'élément "</toto>". C'est un élément toto qui représente une fin de noeud.
Donc, je te conseille d'ajouter le test suivant:
xmltextreader tx;
while (tx.read())
{
if(tx.NodeType == XmlNodeType.Element)
{
switch (tx.name)
{
case "toto"
string name= tx.getattribute("name");
string mark = tx.getattribut("mark";);
break;
}
}
}

Deuxième petit conseil:
Tu devrais déclarer un noeud parent à tes deux noeuds "toto". Car un fichier XML contient toujours un noeud parent de tous.
Par exemple:
<totos>
<toto name= "test1" mark "euro">
</toto>
<toto name = "test2" mark "Dm">
</toto>
</totos>

Voila,


Billou_13

Merci billou_13 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de billou_13
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 26 août 2008 à 17:00
0
Merci
A noter que l'autre noeud toto (alias </toto>) est du type: XmlNodeType.EndElement .


Billou_13
Commenter la réponse de billou_13
maitredede 153 Messages postés vendredi 9 août 2002Date d'inscription 18 septembre 2009 Dernière intervention - 26 août 2008 à 17:21
0
Merci
Bonjour,

Et passer par un XmlDocument ne te simplifierai pas la vie ? A moins que tu ne travaille sur des flux ou des gros fichiers...

@+
Commenter la réponse de maitredede
cs_bisoubebe 5 Messages postés lundi 25 août 2008Date d'inscription 28 août 2008 Dernière intervention - 28 août 2008 à 21:15
0
Merci
merci justement j'avais oublié ce details
mersi
Commenter la réponse de cs_bisoubebe

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.