我在简单的web.config中有这些标签
<Data>
<format type="F1">
<Child1>
Apples
</Child1>
<Child2>
Pears
</Child2>
</format>
<format type="F2">
<Child3>
Oranges
</Child3>
</format>
</Data>
如您所见,我使用由属性标识的多个格式标签。每种格式都有自己的孩子。
在我的代码中,我需要轻松访问这些配置。但我不知道怎么做。 如果需要,可以更改Web.config。我需要这样的东西:
mySetting.Format["F1"].["Child1"]
仅用于阅读设置。什么都没写。
我整个上午都在阅读配置API,我知道如何将它与简单(非重复)标签一起使用。我也查看了 ConfigurationCollection ,但也没有这样做。
任何指针都会非常感激。
更新
在Narek发表言论之后,我改变了方法。 我现在正在使用像这样的web.config:
<Data>
<F1
Child1="Apples"
Child2="Pears"
/>
<F2 Child3="Oranges" />
</Data>
我的设置课程现在是:
public class Settings : ConfigurationSection
{
// Create a "Format" element.
[ConfigurationProperty("F1")]
public Format1Element Format1
{
get
{
return (Format1Element )this["F1"];
}
set
{ this["F1"] = value; }
}
// Create a "Format" element.
[ConfigurationProperty("F2")]
public Format2Element Format2
{
get
{
return (Format2Element )this["F2"];
}
set
{ this["F2"] = value; }
}
}
public class Format1Element : ConfigurationElement
{
[ConfigurationProperty("Child1", IsRequired = true)]
public String Child1
{
get
{
return (String)this["Child1"];
}
set
{
this["Child1"] = value;
}
}
}
public class Format2Element : ConfigurationElement
{
[ConfigurationProperty("Child3", IsRequired = true)]
public String Child3
{
get
{
return (String)this["Child3"];
}
set
{
this["Child3"] = value;
}
}
}
我现在可以使用以下方式获取设置:
settings.Format1.Child1;
我将此页面用作参考http://msdn.microsoft.com/en-us/library/vstudio/2tw134k3(v=vs.100).aspx
答案 0 :(得分:0)
功能
public static string GetChild(string formatType, string child)
{
using (XmlReader reader = XmlReader.Create(filePath))
{
XDocument doc = XDocument.Load(reader);
var val = doc.Descendants().Where(a => a.Name.LocalName == "format" && a.FirstAttribute.Value == formatType).Select(a => a.Element(child)).First().Value;
return val;
}
}
呼叫
GetChild("F1", "Child1");
否则你可以这样做
<configuration>
...
<appSettings>
<add key ="[F1_Child1]" value="Apples"/>
<add key ="[F1_Child2]" value="Pears"/>
</appSettings>
</configuration>
让你的孩子
var child = ConfigurationSettings.AppSettings [ "F1_Child1" ] ;