使用 XElement 保存 XML 文件时,文件中的对齐方式也会发生变化,如何避免?
Posted
技术标签:
【中文标题】使用 XElement 保存 XML 文件时,文件中的对齐方式也会发生变化,如何避免?【英文标题】:When saving XML file with XElement, alignment in file changes as well, how to avoid? 【发布时间】:2013-04-15 20:25:39 【问题描述】:我正在使用
XElement root = XElement.Load(filepath);
加载 XML 文件,然后找到我需要的东西。
IEnumerable<XElement> commands = from command in MyCommands
where (string) command.Attribute("Number") == Number
select command;
foreach (XElement command in commands)
command.SetAttributeValue("Group", GroupFound);
完成更改后,我使用以下代码保存文件。
root.Save(filepath);
保存文件时,我的 XML 文件中的所有行都会受到影响。 Visual Studio默认对齐所有行,但我需要保存原始文件格式。
我不能更改文档的任何部分,除了 Group 属性值。
command.SetAttributeValue("Group") attributes.
【问题讨论】:
【参考方案1】:你需要这样做:
XElement root = XElement.Load(filepath, LoadOptions.PreserveWhitespace);
然后做:
root.Save(filepath, SaveOptions.DisableFormatting);
这将通过使用LoadOptions 和SaveOptions 保留您的原始空白。
【讨论】:
【参考方案2】:您要保留的信息在 XDocument 中开始丢失。
XDocument 不在乎你的元素前面是否有制表符或空格,以及属性之间是否有多个空格等。如果你想依赖 Save() 方法,你必须放弃这个想法您可以保留格式。
要保留格式,您需要添加自定义处理并确定要在何处进行更改。或者,如果您的 XML 来自机器而不是人工编辑,您可以调整保存选项以匹配您的格式
【讨论】:
我的 XML 文件有 10000 行,最好的方法是什么?不确定自定义格式是否是一个选项 我不知道您要达到什么目的 - 您是在构建 XML 编辑器还是在尝试完全匹配某些 Web 服务输出?源格式是否可靠且一致,还是可以一直更改(甚至一次)?您是否希望保留所有格式,例如属性之间的空格? 上面的答案是我一直在寻找的,留下空格但不要碰对齐以上是关于使用 XElement 保存 XML 文件时,文件中的对齐方式也会发生变化,如何避免?的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 中使用 XElement 获取 XML 的元素节点值