2011-05-11 1 views
0

Je travaille sur l'interface graphique (WPF) d'une nouvelle application qui enverra diverses requêtes SOAP et récupérera des réponses SOAP qui seront formées en utilisant un format générique. Voici un exemple de réponse:Je cherche des conseils sur le traitement des réponses génériques SOAP

<SOAP-ENV:Body> 
    <TheResponse> 
     <MetaData> 
      <DataSchema> 
      <ColumnSchema type="decimal" ref="c0" name="min" /> 
      <ColumnSchema type="decimal" ref="c1" name="max" /> 
      </DataSchema> 
     </MetaData> 
     <Data> 
      <Item> 
      <c0>0</c0> 
      <c1>1</c1> 
      </Item> 
     </Data> 
    </TheResponse> 
    </SOAP-ENV:Body> 

Comme vous pouvez le voir, la réponse SOAP définira les méta-données, puis les données réelles. J'ai besoin de créer différents objets en fonction de la demande/réponse. Dans cet exemple, l'objet aurait deux propriétés, Min et Max, dont les valeurs sont respectivement 0 et 1.

Si j'ai les classes définies pour les objets que je sais que je aurais besoin, par exemple:

class MyClass 
{ 
    public decimal Min {get; set;} 
    public decimal Max {get; set;} 
} 

comment pourrais-je aller sur désérialisation la réponse SOAP pour créer l'objet approprié?

Merci pour l'aide.

Répondre

0

Je recommande de commencer par définir un schéma XML pour votre message de savon en utilisant XSD.

Une fois que vous avez un schéma que vous pouvez générer une classe en utilisant:

à partir de Visual Studio 2010 Invite de commandes, exécutez
Xsd.exe schema.xsd/classes/langue: [CS | VB].

Maintenant que vous avez une classe, vous pouvez utiliser XML Serialization pour convertir un objet en XML et XML en un objet en utilisant la classe générée via XSD.

Ces étapes suppriment la nécessité d'écrire manuellement du code pour examiner/analyser le XML.

+0

Merci pour les conseils. En utilisant la méthode que vous avez décrite, les valeurs de mon exemple pour et rempliraient-elles correctement les propriétés Min/Max? Sait-il que lier les valeurs de la section aux noms de propriété de la section ? – Flack

+0

Sur la base de votre exemple, je vois vos métadonnées (DataSchema) se définir comme un schéma XSD que vous utilisez pour générer une classe qui est utilisée pour transmettre les données via Serialization dans votre message Soap. Cela permet de charger la valeur de c0 et c1 dans l'objet. Le but de ma réponse est d'essayer et de vous guider pour éviter d'écrire du code qui analyse et XML et convertit le XML en objet. – Zamboni

Questions connexes