Paris Mix07
Mot de passe :
20/04/2007
Tutoriel : Construire une structure XML "complexe" gràce à la sérialisation

Version PDF à télécharger
Code Source

Droit de diffusion:
L'ensemble ou partie de ce document ainsi que le code mis à disposition, ne peut être diffusé sur d'autres sites Web sans l'autorisation au préalable de son créateur.

Avant Propos :
Venant du monde de l’EDI à l’origine, j’ai souvent été surpris par les structures XML très linéaires. Entête, détails, adresses se suivent souvent sans respecter une arborescence logique. En fait, dans une commande, il ne peut y avoir de détail s’il n’y a pas d’entête.
J’ai donc entrepris de construire un XML WebService qui nécessite une structure complexe, ou dirons nous plutôt avancée :

  • Un premier niveau, l’interchange, qui va donner les informations d’authentification ;
  • Un second, qui est fils du premier, qui correspond à l’entête de ma commande ;
  • Un troisième qui est fils de l’entête avec les adresses de livraison et de facturation
  • Un quatrième, toujours fils de l’entête avec le détail de mes lignes de commande
  • Un dernier, fils de l’interchange qui correspond au pied du document.

Nous obtenons donc une structure de ce type

Nous allons donc voir dans ce tutoriel :
  • La création des structures
  • La sérialisation des celles-ci
  • L’invocation de WebServices, parce que c’est toujours bon de le rappeler et cela ne fait pas de mal !
  • La sortie du flux XML vers le navigateur.
N’hésitez pas à télécharger et à utiliser les sources, elles sont faites pour cela.

Sommaire:

1. Les structures
  1.1. Les informations communes
  1.2. La structure de base, wsInterchange
  1.3. La structure de l’entête
  1.4. La collection de détails
2. Le XML WebService
3. L’invocation du XML
4. La sortie XML vers le flux http
5. En Savoir plus

1. Les structures

1.1. Les informations communes

Si vous souhaitez procéder à une sérialisation « avancée » de vos structures, il est impératif d’ajouter l’assembly System.Xml.Serialization.

Votre classe doit également avoir comme attribut personnalisé [Serializable].

Enfin, si vous souhaitez que les membres de votre structure apparaissent comme attribut d’un élément XML ajoutez l’attribut [XmlAttribute()].

1.2. La structure de base, wsInterchange
C’est la structure principale Elle est bien entendu [Serializable]. Notez qu’elle inclut l’entête et le pied. Le détail et les adresses sont inclus dans l’entête. Dans l’exemple, Login, Pwd et Test sont des données qui apparaîtront dans l’attribut de mon élément WsInterchange



1.3. La structure de l’entête


Mon entête comporte donc la structure pour l’adresse de livraison et de facturation ainsi que 2 éléments pour le numéro et la date de commande. Le numéro de commande est passé en XML en attribut. L’entête comporte aussi de détail. La structure de détails est incorporée dans l’élément « Details » et l’ensemble des valeurs (car c’est une collection) sera incorporé dans des éléments « Detail »


1.4. La collection de détails
N’oubliez pas d’insérer l’assembly System.Collections car elle doit absolument dériver de CollectionBase. Ajoutez également la méthode Add, qui dérive de ICollection. Construisez et récupérez la structure de cette collection. struct_detail comprend la référence, les quantités, le conditionnement et la description.

2. Le XML WebService

La rien de plus simple, un XML WebService commande.asmx est créé et attend la structure « avancée » wsInterchange. Dans un premier temps, il ne fait pas de traitement mais renvoie le numéro de commande. A la portée de tous.




3. L’invocation du XML



La page AppelWS.aspx invoque le WebService lors du clic sur le bouton. Il renvoie son retour dans un label :



Le contenu de la commande est générée par une méthode externe, ConstruitCommande() :



4. La sortie XML vers le flux http



La page AppelXml renvoie la sérialisation non plus vers un WebService mais vers un flux http.



Toujours aussi déconcertant, 4 lignes de codes et ma structure se sérialise et est envoyée sur mon navigateur Internet.

5. En Savoir plus

Mots clés associés : Microsoft c# Tutoriel XML ASP.Net  | Lien permanent | Laissez le premier votre commentaire
Publiée dans la zone Tutoriels .Net
Le profil Facebook de Laurent GEFFROY
Rechercher sur ce site

PicasaNet pour ASP.Net
 
Accès aux Archives
  • Février 2012
  • Janvier 2012
  • Décembre 2011
  • Novembre 2011
  • Octobre 2011
  • Septembre 2011
  • Aout 2011
  • Juillet 2011
  • Juin 2011
  • Mai 2011
  • Avril 2011
  • Mars 2011
  • Février 2011
  • Janvier 2011
  • Décembre 2010
  • Novembre 2010
  • Octobre 2010
  • Septembre 2010
  • Aout 2010
  • Juillet 2010
  • Juin 2010
  • Mai 2010
  • Avril 2010
  • Mars 2010
  • Février 2010
  • Janvier 2010
  • Décembre 2009
  • Novembre 2009
  • Octobre 2009
  • Septembre 2009
  • Aout 2009
  • Juillet 2009
  • Juin 2009
  • Mai 2009
  • Avril 2009 (1)
  • Mars 2009
  • Février 2009
  • Janvier 2009
  • Décembre 2008
  • Novembre 2008
  • Octobre 2008
  • Septembre 2008 (1)
  • Aout 2008
  • Juillet 2008
  • Juin 2008
  • Mai 2008
  • Avril 2008
  • Mars 2008
  • Février 2008
  • Janvier 2008 (1)
  • Décembre 2007
  • Novembre 2007
  • Octobre 2007
  • Septembre 2007
  • Aout 2007
  • Juillet 2007
  • Juin 2007
  • Mai 2007 (3)
  • Avril 2007 (2)

 
fermer la fenetre