以下是我目前正在将 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本身包含“\”
,它会正常工作吗?答案 0 :(得分:602)
答案 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.XmlDocument
版XmlDocument
(例如在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