XML Vers DATASET

Signaler
Messages postés
6
Date d'inscription
samedi 27 septembre 2008
Statut
Membre
Dernière intervention
27 octobre 2009
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
Salut à tous !

J'ai besoin de récupérer des informations provenant d'un fichier xml. (pas de problème pour l'instant, avec dataset.ReadXml).
Le seul ennuie que j'ai c'est que je n'arrive pas à sélectionner quels valeur je veux récupérer dans mon dataset...
Pour être plus clair :
un bout de mon fichier xml :
<?xml version="1.0" encoding="utf-8"?>
<Document>
  <Entete>
    <Type>Cde fournisseur</Type>
    <Numero>88</Numero>
    <Commentaire></Commentaire>
    555

    <Date>2/20/2009</Date>
  </Entete>
 
    38
    5
    14
    1
    1
    1
    1
 
</Document>

Mon dataset doit Contenir une table "Articles" avec pour champs :
    Id (qui reprendra les valeurs de l'attribut "id" des noeuds "Art")
    Designation(qui reprendra les valeurs de l'attribut "des" des noeuds "Art")
    Quantite (qui reprendra la valeur de chaque noeud "Art")

J'ai commencé à regardé vers les Schémas mais je m'y perd un peu

Auriez vous un conseil à me donner ?

Merci d'avance !

1 réponse

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
Salut,

Je pense qu"il faut faire le remplissage de ta datatable de ton dataset à la main.

1 --> Faire des datacolumn typée
2 --> Faire une boucle pour lire les articles
3 --> Sur chaque ligne faire une requete XPATH pour recuperer ce que tu veux
 (NB si tu est en FK 3.0) une requete linq peut faire l'affaire aussi. (cf linq2xml)
4--> Inserer la ligne dans la datatable

  XDocument r = XDocument.Load("pays.xml");

           var pays = from p in r.Descendants("Pays")
                       select new Pays { Nom p.Value, Id p.Attribute("Id").Value

 class Pays

    {

        public string Nom { get; set; }

       public string Id { get; set; }

    }

<?xml version="1.0" encoding="utf-8" ?>



  France



  Italie



  Corée



  Australie