使用 C# 将 XML 转换为字符串

Posted

技术标签:

【中文标题】使用 C# 将 XML 转换为字符串【英文标题】:Converting XML to string using C# 【发布时间】:2011-09-03 21:45:19 【问题描述】:

我有如下功能

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;
    

我正在从另一个方法向这个方法传递一个 XML。但是在doc.loadxml() 中,系统需要一个字符串,并且由于我传递的是 XML,所以它会引发错误。

如何解决这个问题?

【问题讨论】:

看我的回答这可能会有所帮助 重复:***.com/questions/2407302/… 【参考方案1】:

As Chris suggests,你可以这样:

public string GetXMLAsString(XmlDocument myxml)

    return myxml.OuterXml;

或者像这样:

public string GetXMLAsString(XmlDocument myxml)
    

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

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

如果你真的想创建一个新的XmlDocument 然后这样做

XmlDocument newxmlDoc= myxml

【讨论】:

第一个答案完美运行【参考方案2】:

有一种更简单的方法可以将您的 XmlDocument 转换为字符串;使用 OuterXml 属性。 OuterXml property 返回 xml 的字符串版本。

public string GetXMLAsString(XmlDocument myxml)

    return myxml.OuterXml;

【讨论】:

【参考方案3】:
   public string GetXMLAsString(XmlDocument myxml)
    
        using (var stringWriter = new StringWriter())
        
            using (var xmlTextWriter = XmlWriter.Create(stringWriter))
            
               myxml.WriteTo(xmlTextWriter);
               return stringWriter.ToString();
            

            

【讨论】:

+1 为usingGetStringBuilder() 的绕道不是必须的,stringWriter.ToString() 就可以了

以上是关于使用 C# 将 XML 转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

将 XML 转换为动态 C# 对象

将 XML 字符串 API 响应转换为键值对象 C#

带有特殊字符的 XML 在 C# 中转换为 Json

c# .net 怎么将一个xml字符串 转换成一个xmlnode ,(不是xmldocument)

我需要将 XML 字符串转换为 XmlElement

将 Web 服务 API 中的 XML 字符串反序列化为 C# 对象