3

我在用

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.
4

2 回答 2

11

你需要做:

XElement root = XElement.Load(filepath, LoadOptions.PreserveWhitespace);

然后做:

root.Save(filepath, SaveOptions.DisableFormatting);

这将通过使用LoadOptionsSaveOptions保留您的原始空白。

于 2013-04-22T20:01:17.697 回答
1

您要保留的信息在 XDocument 中开始丢失。

XDocument 不在乎您的元素前面是否有制表符或空格,以及属性之间是否有多个空格等。如果您想依赖 Save() 方法,则必须放弃可以保留的想法格式化。

要保留格式,您需要添加自定义处理并确定要在何处进行更改。或者,如果您的 XML 来自机器而不是人工编辑,您可以调整保存选项以匹配您拥有的格式

于 2013-04-22T19:55:01.357 回答