3

作为安装过程的一部分,我更新了 app.config 文件中的一些值,该文件的构建和缩进方式有助于用户读取这些值。它是按部分构建的,每个部分都是一个 XElement,每个值都是一个 XAttribute。

这是以下部分的示例:

<DataAccessSection
  DataMappingFile = "Data\Mapping.xml"
  SchemaKeyWord = "[generated]"
/>
<ServiceManagementSection
  ServerName = "dummy"
  ServerIP = "1.0.0.0"
  Port = "1"
/>

我使用 XDocument 编辑文件,访问该部分的 XElement 并更改 XAttribute 的值,然后使用保存更改xDocument.Save(fullpath);

文件保存后,配置文件的结构是这样的:

<DataAccessSection DataMappingFile="Data\Mapping.xml" SchemaKeyWord="[generated]" />
<ServiceManagementSection ServerName="dummy" ServerIP="1.0.0.0" Port="1" />

这种结构对用户来说不是很清楚,我如何将文件保持在初始结构中并且只更改值而不更改缩进?

我可以将它作为一个简单的文本文件打开和编辑,但是当我拥有结构化 XML 文件的强大功能时,像文本文件一样访问它似乎很愚蠢。

编辑:感谢您的回答。

我在答案中尝试了解决方案,但它不断删除我的空格和缩进。我还尝试使用以下方法加载:

XDocument.Load(fullPath, LoadOptions.PreserveWhiteSpaces);

但这并不能解决我的问题。唯一保留所有空格的是将其作为文本文件加载,并使用字符串操作进行编辑,但我不想这样做。

有没有人有不同的方法可以解决这个问题?

也许使用不同的包进行 XML 编辑?

4

2 回答 2

6

调用 xDocument.Load 时使用 LoadOptions.PreserveWhitespace,保存时使用 SaveOptions.DisableFormatting

于 2012-09-10T08:32:04.077 回答
2

尝试 :

yourDoc.Save(fullpath, SaveOptions.DisableFormatting);

文档

DisableFormatting :在序列化时保留所有无关紧要的空白。

于 2012-09-10T08:31:47.540 回答