这是我目前将 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 本身包含“\”,它会正常工作吗
假设 xmlDoc 是一个 XmlDocument 对象 xmlDoc.OuterXml 有什么问题?
return xmlDoc.OuterXml;
OuterXml property 返回 xml 的字符串版本。
没有任何引号。这只是VS调试器。尝试打印到控制台或保存到文件,你会看到。附带说明:始终处理一次性物品:
using (var stringWriter = new StringWriter())
using (var xmlTextWriter = XmlWriter.Create(stringWriter))
{
xmlDoc.WriteTo(xmlTextWriter);
xmlTextWriter.Flush();
return stringWriter.GetStringBuilder().ToString();
}
using
块而不是 XmlTextWriter
。
Flush
的调用,尽管对 Close
的调用或只是关闭 xmlTextWriter
using
块也可以实现相同的效果。
如果您使用 XmlDocument
的 Windows.Data.Xml.Dom.XmlDocument
版本(例如在 UWP 应用程序中使用),您可以使用 yourXmlDocument.GetXml()
将 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.InnerXml
属性来获取字符串中的 xml