2012-09-10 52 views
3

作爲我的安裝過程的一部分,我更新了我的app.config文件中的一些值, 該文件是以幫助用戶讀取值的方式構建和縮進的。 它是按部分構建的,每個部分都是一個XElement,每個值都是一個XAttribute。在C#中保留編輯的XML文件的縮進

這是部分樣本:

<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編輯?

回答

6

使用LoadOptions.PreserveWhitespace當你打電話給xDocument.Load和SaveOptions.DisableFormatting當你保存

2

嘗試:

yourDoc.Save(fullpath, SaveOptions.DisableFormatting); 

documentation

DisableFormatting:保留所有無關緊要的空格,而序列化。