将XmlDocument转换为String

时间:2010-03-09 07:31:27

标签: c# string escaping quotes xmldocument

以下是我目前正在将 XMLDocument 转换为字符串

的方式
StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter);

xmlDoc.WriteTo(xmlTextWriter);

return stringWriter.ToString();

这种方法的问题在于,如果我在属性中有((引号)),它就会逃脱它们。

For Instance:

<Campaign name="ABC">
</Campaign>

以上是预期的XML。但它返回

<Campaign name=\"ABC\">
</Campaign>

我可以 String.Replace“\”但是这个方法好吗?有没有什么副作用?如果XML本身包含“\”

,它会正常工作吗?

6 个答案:

答案 0 :(得分:602)

假设xmlDoc是XmlDocument对象,xmlDoc.OuterXml有什么问题吗?

return xmlDoc.OuterXml;

OuterXml property返回xml的字符串版本。

答案 1 :(得分:163)

没有任何报价。它只是VS调试器。尝试打印到控制台或保存到文件,你会看到。作为旁注:始终处置一次性物品:

using (var stringWriter = new StringWriter())
using (var xmlTextWriter = XmlWriter.Create(stringWriter))
{
    xmlDoc.WriteTo(xmlTextWriter);
    xmlTextWriter.Flush();
    return stringWriter.GetStringBuilder().ToString();
}

答案 2 :(得分:8)

如果您使用Windows.Data.Xml.Dom.XmlDocumentXmlDocument(例如在UWP应用中使用),则可以使用yourXmlDocument.GetXml()将XML作为字符串获取。

答案 3 :(得分:5)

作为扩展方法:

public static class Extensions
{
    public static string AsString(this XmlDocument xmlDoc)
    {
        using (StringWriter sw = new StringWriter())
        {
            using (XmlTextWriter tx = new XmlTextWriter(sw))
            {
                xmlDoc.WriteTo(tx);
                string strXmlText = sw.ToString();
                return strXmlText;
            }
        }
    }
}

现在简单地使用:

yourXmlDoc.AsString()

答案 4 :(得分:2)

"在调试器中显示为\",但字符串中的数据是正确的,您无需替换任何内容。尝试将您的字符串转储到文件中,您会注意到该字符串是正确的。

答案 5 :(得分:0)

您可以使用 xmlDoc.InnerXml 属性获取字符串中的 xml