在序列化 (LINQ to XML) 时保留空白

本文描述在序列化 XML 树时如何控制空白。

一种常见方案是,读取缩进式 XML,在内存中创建不含任何空白文本节点(即不保留空白)的 XML 树,对 XML 执行一些操作,再保存带缩进的 XML。 在序列化带格式的 XML 时,只保留 XML 树中有意义的空白。 这是 LINQ to XML 的默认行为。

另一个常见的情况是读取和修改已经有意缩进的 XML。 您可能不想以任何方式更改这种缩进。 若要在 LINQ to XML 中执行此操作,可在加载或解析 XML 时保留空白,并在序列化 XML 时禁用格式设置。

用于序列化 XML 树的方法的空白符行为

XElementXDocument 类中的以下方法用于序列化 XML 树。 可以将 XML 树序列化为文件、TextReaderXmlReaderToString 方法序列化为字符串。

如果方法不接受 SaveOptions 作为参数,那么该方法将格式化(缩进)序列化的 XML。 在这种情况下,将丢弃 XML 树中所有无意义的空白。

如果方法接受 SaveOptions 作为参数,那么您可以指定不格式化(缩进)序列化的 XML。 在这种情况下,将保留 XML 树中的所有空白。