我有一些复杂的数据用于xml格式的应用程序配置。我想在web.config中保留这个xml字符串。是否可以在web.config中添加一个大的xml字符串并在代码中获取它?
答案 0 :(得分:17)
如果您不想编写配置节处理程序,可以将XML放在映射到IgnoreSectionHandler
的自定义配置节中:
<configuration>
<configSections>
<section
name="myCustomElement"
type="System.Configuration.IgnoreSectionHandler"
allowLocation="false" />
</configSections>
...
<myCustomElement>
... complex XML ...
</myCustomElement>
...
</configuration>
然后,您可以使用任何XML API读取它,例如XmlDocument
,XDocument
,XmlReader
个类。 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数据进行编码(所有<
至<
,>
至>
,&
至&
, "
至"e;
)
您可以将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="<root>
 <value>10</value>
</root>" />
哪种方法违背了配置元素的目的。
最好将配置值存储在文件系统的单独文件中,然后将其从那里读入字符串或XmlDocument等。