Probleme: recuperer valeurs

Résolu
neofenix Messages postés 145 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 11 mars 2010 - 4 juil. 2008 à 14:29
neofenix Messages postés 145 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 11 mars 2010 - 4 juil. 2008 à 15:24
bonjour,
voila j'ai un petit probleme concernant la recuperation de valeurs d'un xml en c#.
les valeurs que je souhaite recuperer ne sont pas entre les balises mais dans les balises et je ne sais pas comment faire.
voici un exemple du xml (les données sont fausses pour raison de securité ^^):

<?xml version= "1.0" standalone="yes"
?>

[# -]<report>

[# -]<table>

[# -]<columns>

 <columnname=" campaign "
/>

 <columnname ="adgroup" />

 <columnname= " agStatus "
/>

 <columnname ="imps" />

 <columnname= " clicks " />

 <columnname ="ctr" />

 <columnname= " cpc " />

 <columnname ="cost" />

 <columnname= " pos " />

 </columns>

 <rowscampaign ="test"
adgroup" testadgroup " agStatus"test
agStatus" imps= " zrzerz "
clicks ="1000" ctr= " 0.25 " cpc ="dzdzd" cost= " 2000 " pos ="1.21" />

 </table>

[# -]<totals>
 <grandtotalimps" 12 " clicks"1" ctr= " 5.8 " cpc ="7" cost= " 65 " pos ="2.5" />

 </totals>

 </report>

Doncles valeurs que je souhaite recuperer sont celles en gras.
Merci d'avance.

6 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
4 juil. 2008 à 14:51
Salut,

Rien ne vaut un petit exemple (en faisant référence à System.Xml):

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("test.xml");

XmlNodeList nodes = xmlDoc.SelectNodes("/report/table/columns/column");

foreach (XmlNode node in nodes)
{
XmlAttribute attribute = node.Attributes["name"];
string value = attribute.Value;
}

Voila,

Bon courage, mais tu devrais trouver beaucoup de ressources sur le forum pour ce genre de choses.


Billou_13
3
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
4 juil. 2008 à 15:10
Alors là, je ne vois pas la différence entre récupérer les valeurs que je t'ai montré et les autres ?.

Il suffit juste de sélectionner le noeud rows (au lieu de column) et ensuite d'appeler les attributs un par un.

Je ne vois pas où est ta difficulté ?


Billou_13
3
cs_niky Messages postés 168 Date d'inscription jeudi 28 juin 2001 Statut Membre Dernière intervention 18 octobre 2008 7
4 juil. 2008 à 14:57
Salut,

Pour info, ceci n'est pas une syntaxe XML valide :
<columnname="campaign" />

Une syntaxe valide serait (avec un espace entre column et name):
<column name="campaign" />
ou
<columnname name="campaign" />

Tu ne peux pas attribuer une valeur au nom du noeud : il te faut un attribut.
0
neofenix Messages postés 145 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 11 mars 2010
4 juil. 2008 à 15:06
c'est pas tout a fait ce que je souhaite.
j'avais deja reussi a avoir les memes resultats que toi (les elements recuperer par ton code sont:

ccampaign

  adgroup

  agStatus

   imps

  click

 "ctr

  cpc

  cost

  posmais moi je veux obtenir<rows campaign" test " adgroup"testadgroup" agStatus= " test agStatus " imps ="zrzerz" clicks= " 1000 " ctr ="0.25" cpc= " dzdzd " cost ="2000" pos="1.21" /> (les valeurs en gras sur cet exemple)
sinon je pour ton exemple je suis daccord on trouve beaucoup de source :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neofenix Messages postés 145 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 11 mars 2010
4 juil. 2008 à 15:07
+1 [auteur/NIKY/880.aspx niky]

c'est le copier coller qui a enlever les espaces ^^
c'est bien <column name="campaign" />
0
neofenix Messages postés 145 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 11 mars 2010
4 juil. 2008 à 15:24
merci maintenant ca marche en fait je devais faire 2boucle imbriquées:

foreach (XmlNode node in nodes1)
             {
                 XmlAttribute attribute = node.Attributes["name"];
                 string value = attribute.Value;
                 Console.Write("{0}:",value);
                 foreach (XmlNode node2 in nodes2)
                 {
                     XmlAttribute attribute2 = node2.Attributes[value];
                     string value2 = attribute2.Value;
                     Console.WriteLine("{0}:", value2);
                 }
                 Console.WriteLine("---------------------------------");
             }
0
Rejoignez-nous