如何在web.config中添加xml

本文关键字:添加 xml config web | 更新日期: 2023-09-27 18:27:42

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

如何在web.config中添加xml

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

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

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

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

有几种方法可以实现您想要的(应用程序代码可以全局静态访问的XML片段):

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

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

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

  • 不要使用web.config,而是使用一个Settings文件作为@Yuck评论的

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

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等中。