如何在web.config中添加xml?

时间:2012-03-12 12:18:41

标签: c# asp.net .net wcf

我有一些复杂的数据用于xml格式的应用程序配置。我想在web.config中保留这个xml字符串。是否可以在web.config中添加一个大的xml字符串并在代码中获取它?

3 个答案:

答案 0 :(得分:17)

如果您不想编写配置节处理程序,可以将XML放在映射到IgnoreSectionHandler的自定义配置节中:

<configuration>
    <configSections>
      <section 
          name="myCustomElement" 
          type="System.Configuration.IgnoreSectionHandler" 
          allowLocation="false" />
    </configSections>
    ...
    <myCustomElement>
        ... complex XML ...
    </myCustomElement>
    ...
</configuration>

然后,您可以使用任何XML API读取它,例如XmlDocumentXDocumentXmlReader个类。 E.g:

XmlDocument doc = new XmlDocument();
doc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
XmlElement node = doc.SelectSingleNode("/configuration/myCustomElement") as XmlElement;
... etc ...

答案 1 :(得分:6)

有多种方法可以实现您的目标(一个可以全局和静态访问应用程序代码的XML片段):

  • web.config 一个XML文件。您可以编写自定义配置部分(如here所述),以便从自定义XML中获取数据。

  • 您可以对XML数据进行编码(所有<&lt;>&gt&&amp;"&quote;

  • 您可以将XML数据放在<![CDATA[]]>部分

  • 不要使用web.config,而是Settings file作为@Yuck发表评论

就易于开发和使用而言,最后一个选项是最好的选择。

答案 2 :(得分:0)

web.config中的配置部分支持长字符串,但字符串必须是单行文本,因此它们可以适合属性:

 <add name="" value="... some very long text can go in here..." />

该字符串也不能包含引号或换行符或其他XML标记字符。数据基本上是XML,必须进行适当的编码。

例如,如果你有这样的XML:

 <root>
   <value>10</value>
 </root>

它必须存储在这样的配置值中:

<add key="Value" value="&lt;root&gt;&#xD;&#xA;  &lt;value&gt;10&lt;/value&gt;&#xD;&#xA;&lt;/root&gt;" />

哪种方法违背了配置元素的目的。

最好将配置值存储在文件系统的单独文件中,然后将其从那里读入字符串或XmlDocument等。