将XmlDocument转换为string

这是我目前如何将XMLDocument转换为string

StringWriter stringWriter = new StringWriter(); XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter); xmlDoc.WriteTo(xmlTextWriter); return stringWriter.ToString(); 

这个方法的问题是,如果我有 ((引号),我有属性)它逃脱它们。

例如:

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

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

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

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

没有任何报价。 这只是VSdebugging器。 尝试打印到控制台或保存到文件,你会看到。 作为一个方面说明:总是处理一次性物品:

 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的string版本。

如果您使用XmlDocument Windows.Data.Xml.Dom.XmlDocument版本(例如,在UWP应用程序中使用),则可以使用yourXmlDocument.GetXml()以stringforms获取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() 

"在debugging器中显示为” \" ,但string中的数据是正确的,您不需要replace任何东西。 尝试将您的string转储到一个文件,你会注意到该string是正确的。