2010-11-24 26 views
2

En C#, j'essaye d'appeler un service Web qui retourne un fichier XML.Comment convertir des données Streamreader en XmlDocument?

Je peux créer une requête HttpWebRequest sur le service Web et stocker la sortie dans un StreamReader. Mais comment puis-je convertir ces données en XMLDocument?

+0

S'agit-il d'un service Web basé sur SOAP? Ensuite, vous ne devriez pas utiliser HttpWebRequest. Utilisez simplement "Ajouter une référence de service" et appelez les "méthodes" de la classe de proxy qui est créée pour vous - aucun XML impliqué. –

+0

C'est un service RESTful – Troyes22

Répondre

7

Utilisez XmlDocument.Load() - J'utilise la surcharge qui accepte un XmlReader pour encaisser dedans sur la détection de codage automatique de XmlReader.Create:

XmlDocument document = new XmlDocument(); 
using(Stream stream = request.GetResponse().GetResponseStream()) {   
    using(XmlReader reader = XmlReader.Create(stream)) { 
     document.Load(stream); 
    } 
} 
+2

Cela suppose que le codage du flux de réponse est le même que le codage XML. Cela n'a pas à être. –

+1

Bon point Hans - mis à jour. –

+3

Je remarque que pendant que vous créez un XmlReader, vous ne faites que passer l'objet original 'stream' dans document.Load() –

1

Utilisez System.Xml.Linq.XDocument.Load (lecteur de flux);

0

Vous devez stocker la sortie reçue dans un StringWriter ou juste un stringand la chargez-le en utilisant XmlDocument.Load (string).

+0

pourquoi le faire de cette façon? –

+0

Parce qu'il veut le stocker :). En fait, je voudrais aller chercher la solution de Jeff ci-dessus. – florin