将XmlDocument转换为字符串

下面是我目前如何将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本身包含“\”,它会正常工作吗

301764 次浏览

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

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

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

return xmlDoc.OuterXml;

OuterXml财产返回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()

如果你正在使用XmlDocumentWindows.Data.Xml.Dom.XmlDocument版本(例如在UWP应用程序中使用),你可以使用yourXmlDocument.GetXml()来获取XML字符串。

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