239

这是我目前将XMLDocument转换为String的方式

StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter);

xmlDoc.WriteTo(xmlTextWriter);

return stringWriter.ToString();

这种方法的问题是,如果我有" ((quotes) 我在属性中拥有) 它会转义它们。

例如:

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

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

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

我可以做String.Replace "\"但这种方法可以吗?有没有什么副作用?如果 XML 本身包含“\” ,它会正常工作吗

4

6 回答 6

700

假设 xmlDoc 是一个 XmlDocument 对象 xmlDoc.OuterXml 有什么问题?

return xmlDoc.OuterXml;

OuterXml属性返回 xml 的字符串版本。

于 2010-03-09T07:35:27.350 回答
203

没有任何引号。这只是VS调试器。尝试打印到控制台或保存到文件,你会看到。附带说明:始终处理一次性物品:

using (var stringWriter = new StringWriter())
using (var xmlTextWriter = XmlWriter.Create(stringWriter))
{
    xmlDoc.WriteTo(xmlTextWriter);
    xmlTextWriter.Flush();
    return stringWriter.GetStringBuilder().ToString();
}
于 2010-03-09T07:33:33.490 回答
11

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

于 2016-03-01T14:09:07.990 回答
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()
于 2012-10-01T19:36:28.687 回答
2

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

于 2010-03-09T07:35:39.213 回答
1

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

于 2021-01-11T07:50:25.337 回答