2011-02-28 52 views
1

我需要添加很多條目到我的web.config文件的許多網站。修改一個web.config文件,就好像它是一個文本文件

我首先查看使用XmlDocument並創建元素和屬性,然後將它們插入到文檔中。很快,這看起來像是我必須添加的所有元素的大量工作。

將配置文件視爲一個長長的文本字符串並在某些位置進行替換以添加我的條目有什麼影響。事情是這樣的......

private void InsertXMLElement() 
{ 
    StringBuilder webConfig = new StringBuilder(); 

    // get the file into a stringbuilder for manipulation 
    using (var sr = new StreamReader("C:\web.config")) 
    { 
     webConfig.Append(sr.ReadToEnd()); 
    } 

    // insert my element by doing a replace 
    webConfig.Replace("</configSections>","very long xml element with lots of attributes" + "</configSections>"); 

} 

很明顯,我知道文件的手之前的狀態,或者可以進行額外檢查,以確保該項目已經不存在。

回答

2

儘可能避免重新發明車輪。您是否看過ConfigurationManager?這非常有用。它有很多很好的方法,如GetSection

一旦你有了相關章節,你可以保存修改。

0

我能想到的最壞的情況作了說明您的情況是您的替換文本包含<!-- ... -->註釋,該文件包含</configSections>已經內部評論,因爲XML註釋不嵌套很好。如果你聲稱你的「很長xml ...」沒有評論,它可能會工作(雖然結果可能並不總是漂亮)。

個人而言,我會使用XML ...

0

我不得不與喬R和馬克同意,在使用XML如果你是剛剛加入的屬性是要走的路。

這就是說,我確切地說明了你的意圖(另一個目的)沒有傷害。

我們就想了一個辦法,讓開發人員能夠保持QA /測試的web.config在w中籤的單拷貝/ O需要知道,我們的10個測試系統(所有DNS硬命名爲多個團隊訪問)代碼正在部署到。因此,開發人員檢查web.configs中的變量和控制字符「$(x)」,我們解析爲文本並在部署時替換。我發現我有更多的靈活性和更好的性能(我打破文件分開,並行處理在塊/線,然後重新組裝)

所以要回答,從技術上說,它不應該是一個問題。

建議,除非你找到一些具體的理由來做這件事,否則不要這樣做。我永遠不會做這個沒有先嚐試XML的方法,成功,只是想要不同的行爲

相關問題