When saving XML file with XElement, alignment in file changes as well, how to avoid?

穿精又带淫゛_ 提交于 2019-12-23 16:58:35

问题


I am using

XElement root = XElement.Load(filepath);

to load XML file, then finding things that I need.

IEnumerable<XElement> commands = from command in MyCommands
                                 where (string) command.Attribute("Number") == Number
                                 select command;

foreach (XElement command in commands)
{
     command.SetAttributeValue("Group", GroupFound);
}

When I am done with my changes, I save the file with the following code.

root.Save(filepath);

When file is saved, all the lines in my XML file are affected. Visual Studio aligns all the lines by default, but I need to save the original file format.

I cannot alter any part of the document, except the Group attribute values.

command.SetAttributeValue("Group") attributes.

回答1:


You would need to do:

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

then do:

root.Save(filepath, SaveOptions.DisableFormatting);

This will preserve your original whitespace through the use of LoadOptions and SaveOptions.




回答2:


The information you're looking to preserve is lost to begin in the XDocument.

XDocument doesn't care if your elements had tabs or spaces on the line in front of them and if there are multiple whitespaces between attributes etc. If you want to rely on the Save() method you have to give up the idea you can preserve formatting.

To preserve formatting you'll need to add custom processing and figure out where precisely to make changes. Alternatively you may be able to adjust your save options to match the formatting you have if your XML is coming from a machine and not human edited



来源:https://stackoverflow.com/questions/16155516/when-saving-xml-file-with-xelement-alignment-in-file-changes-as-well-how-to-av

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!