2011-02-28 80 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的方法,成功,只是想要不同的行为

相关问题