Actualité Tutoriels Liens contact dotnet-tech.com - Home - Tutoriels techniques avec code source Dotnet-tech.com : Les site sur les technologies .Net

Emploi by Jobintree

Construire une structure XML "complexe" grace à la sérialisation

(Avec code source à télécharger)

Mis à jour le 08/09/2004
Par Laurent Geffroy



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





Accueil - Tutoriels & Articles - Liens - A Propos de l'auteur dotnet-tech.com : le site des technologies .net

www.dotnet-tech.com - 2003-2007