2011-08-24 4 views
2

J'ai un service de repos WCF. Il a une méthode qui renvoie une liste d'objets. Le type d'objet est défini en tant que DataContract et il a DataMembers. Maintenant, cela fonctionne très bien, je peux obtenir ma liste d'objets en XML via ma méthode. C'est génial et sympa.WCF REST résultat XML

Ma question est la suivante: est-il possible d'obtenir le résultat XML avant de le renvoyer de la méthode? Alors, est-ce que je peux avoir exactement le même XML dans ma méthode que je peux obtenir en appelant ma méthode via REST?

.net4/VS2010

Répondre

3

La réponse d'Alfonso est juste un peu , mais vous avez dit que vous utilisez DataContract et DataMember. La classe XmlSerializer n'est pas destinée à être utilisée avec des contrats de données. Au lieu de cela, vous cherchez DataContractSerializer. Utilisation de cela est très similaire, mais ressemblerait à ceci:

DataContractSerializer serializer = new DataContractSerializer(typeof(YourResultType)); 
StringBuilder stringBuilder = new StringBuilder(); 

using(XmlWriter xmlWriter = XmlWriter.Create(stringBuilder)) 
{ 
    serializer.WriteObject(xmlWriter, someInstanceOfYourResultType); 
} 

// use stringBuilder.ToString() to get the XML 
+0

Merci beaucoup, ça marche! – Tom

1

Vous pouvez utiliser XmlSerializer pour sauvegarder le résultat d'une chaîne XML avant de le retourner.

XmlSerializer ser = new XmlSerializer(typeof(YourResultType)); 
StringBuilder sb = new StringBuilder(); 
StringWriter sw = new System.IO.StringWriter(sb); 
ser.Serialize(sw, yourResult); 
// Use sb.ToString() 
+0

Thx Alfonso, je vais vérifier! :) – Tom

+1

XmlSerializer n'obéira pas aux attributs DataContract/DataMember dont Tom a parlé, il devra utiliser un DataContractSerializer pour cela. –