XDocument加载XML时PreserveWhitespace无效无法保留空格换行问题咨询
XDocument加载XML无法完全保留空格换行的解决方法
仅设置加载时的LoadOptions.PreserveWhitespace是不够的,必须加载和保存环节的参数配套设置才能完整保留原始空白格式。
- 加载环节正确配置
加载文件或XML字符串时,明确传入LoadOptions.PreserveWhitespace参数:
// 从本地文件加载 XDocument xmlDoc = XDocument.Load("test.xml", LoadOptions.PreserveWhitespace); // 从XML字符串加载 XDocument xmlDoc = XDocument.Parse(xmlString, LoadOptions.PreserveWhitespace);
- 保存/输出环节正确配置
这是最容易被忽略的核心步骤,默认保存/输出时XDocument会自动格式化XML、重排缩进和换行,必须传入SaveOptions.DisableFormatting参数禁用自动格式化:
// 保存到本地文件 xmlDoc.Save("output.xml", SaveOptions.DisableFormatting); // 转换为字符串输出 string resultXml = xmlDoc.ToString(SaveOptions.DisableFormatting);
- 异常情况排查
如果完成以上两步后仍有空白丢失,优先排查以下问题:- 原始XML存在语法错误:你提供的示例XML中
<id标签后多了非法反引号,语法错误会导致XML解析器自动修正节点,连带周围空白被重置,先修正XML语法后再操作 - 操作XML节点时删除了空白节点:手动修改XDocument节点时如果误删了
XText类型的空白节点,也会导致空白丢失,调整节点操作逻辑避免误删即可
- 原始XML存在语法错误:你提供的示例XML中
内容的提问来源于stack exchange,提问作者rushaal maksane
相关产品推荐
相关产品推荐

