以下是我目前如何将XMLDocument转换为字符串

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

xmlDoc.WriteTo(xmlTextWriter);

return stringWriter.ToString();

这个方法的问题是,如果我在属性中有“((引号)),它会转义它们。

例如:

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

以上是预期的XML。但是它回来了

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

我可以做字符串。替换"\"但是这个方法可行吗?有什么副作用吗?如果XML本身包含一个"\"


当前回答

没有引用。它只是VS调试器。试着打印到控制台或保存到一个文件,你就会看到。附注:总是处理一次性物品:

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

其他回答

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

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

“在调试器中显示为\”,但字符串中的数据是正确的,您不需要替换任何东西。尝试将字符串转储到一个文件中,您将注意到字符串是正确的。

作为扩展方法:

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()

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

return xmlDoc.OuterXml;

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