web-dev-qa-db-fra.com

Conversion de xml en chaîne à l'aide de C #

J'ai une fonction comme ci-dessous

public string GetXMLAsString(XmlDocument myxml)
    {
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(myxml);

        StringWriter sw = new StringWriter();
        XmlTextWriter tx = new XmlTextWriter(sw);
        doc.WriteTo(tx);

        string str = sw.ToString();// 
        return str;
    }

je passe un xml à cette méthode à partir d'une autre méthode.Mais dans la doc.loadxml(), le système attend une chaîne et puisque je passe un xml, il jette une erreur. Merci d'avance..

21
sachin

Comme Chris le suggère , vous pouvez le faire comme ceci:

public string GetXMLAsString(XmlDocument myxml)
{
    return myxml.OuterXml;
}

Ou comme ça:

public string GetXMLAsString(XmlDocument myxml)
    {

        StringWriter sw = new StringWriter();
        XmlTextWriter tx = new XmlTextWriter(sw);
        myxml.WriteTo(tx);

        string str = sw.ToString();// 
        return str;
    }

et si vous voulez vraiment créer un nouveau XmlDocument alors faites ceci

XmlDocument newxmlDoc= myxml
49
Kimtho6

Il existe un moyen beaucoup plus simple de convertir votre XmlDocument en chaîne; utilisez la propriété OuterXml . La propriété OuterXml renvoie une version chaîne du xml.

public string GetXMLAsString(XmlDocument myxml)
{
    return myxml.OuterXml;
}
29
Chris Moutray
   public string GetXMLAsString(XmlDocument myxml)
    {
        using (var stringWriter = new StringWriter())
        {
            using (var xmlTextWriter = XmlWriter.Create(stringWriter))
            {
               myxml.WriteTo(xmlTextWriter);
               return stringWriter.ToString();
            }

        }    
}
3
danyolgiax