.NET新版XmlDocument.InnerText替代方案:完整文档转字符串
解决XmlDocument获取带格式整文档字符串的问题
我懂你现在的困扰——旧版.NET里调用XmlDocument.InnerText就能拿到带换行、缩进的完整XML字符串,但新版框架里这个方法在XmlDocument对象上被停用了,用InnerXml又只能得到没有格式的紧凑字符串,确实有点闹心。
其实最简的解决方案是借助XmlWriter来生成带格式的XML输出,具体操作很清晰:
- 先创建
XmlWriterSettings对象,配置缩进、换行等格式参数 - 用
XmlWriter把整个XmlDocument写入到StringWriter中 - 最后从
StringWriter里取出格式化后的字符串
给你一段现成的可直接用的代码:
using System.Xml; using System.IO; public string GetFormattedXmlString(XmlDocument xmlDoc) { // 配置XML输出格式:开启缩进、设置缩进字符和换行符 var writerSettings = new XmlWriterSettings { Indent = true, IndentChars = " ", // 也可以换成"\t"用制表符缩进 NewLineChars = Environment.NewLine, OmitXmlDeclaration = false // 如果不需要开头的<?xml...?>声明,改成true就行 }; using (var stringWriter = new StringWriter()) using (var xmlWriter = XmlWriter.Create(stringWriter, writerSettings)) { xmlDoc.WriteTo(xmlWriter); xmlWriter.Flush(); return stringWriter.ToString(); } }
这个方法完全能替代你之前用XmlDocument.InnerText实现的效果,而且还能灵活调整格式(比如修改缩进字符、是否保留XML声明等)。
另外补充一句:InnerXml本身的设计就是返回无格式的节点XML内容,所以它不会处理换行和缩进,而XmlWriter是官方推荐用来控制XML输出格式的工具,这也是最合规的替代方案哦。
内容的提问来源于stack exchange,提问作者Belgin Fish
相关产品推荐
相关产品推荐

