从 xml 文件中获取参数数组

本文关键字:参数 数组 获取 xml 文件 | 更新日期: 2023-09-27 18:30:44

我有以下app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <xx>
      <add key="x" value="1.1.1.1" />
      <add key="y" value="1.1.1.1" />
      <add key="z" value="1.1.1.1" />
      <add key="w" value="6" />
    </xx>
    <yy>
      <add key="Wireshark" value="1" /> 
    </yy>
    <zz>
      <add key="Firmware1" value="C:'Users'Desktop'Download.txt/>
      <add key="Firmware2" value="C:'Users'Desktop'Download.txt" />
    </zz>
</configuration>

我怎样才能有一个 X、Y 和 W 的数组。我是否需要应用程序设置? 这个 XML 有效吗?

从 xml 文件中获取参数数组

首先,您需要为配置文件中的每个自定义节编写一个自定义类;另一种选择是使用内置类型之一。

例如;

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="Default" type="System.Configuration.NameValueSectionHandler" />
        <section name="Maestro" type="System.Configuration.NameValueSectionHandler" />
        <section name="Drive" type="System.Configuration.NameValueSectionHandler" />
    </configSections>
    <Default>
      <add key="gmasIP" value="192.168.2.3" />
      <add key="hostIP" value="192.168.2.2" />
      <add key="GatewayIP" value="192.168.2.4" />
      <add key="relayCOM" value="6" />
    </Default>
    <Maestro>
      <add key="Wireshark" value="1" /> 
    </Maestro>
    <Drive>
      <add key="FirmwarePath" value="C:'Users'rinat'Desktop'Download.txt/>
      <add key="FirmwarePalPath" value="C:'Users'rinat'Desktop'Download.txt" />
    </Drive>
</configuration>

如果要以数组形式获取值:

    var defaultItems= ConfigurationManager.GetSection("Default") as NameValueCollection;
    List<string> temp = new List<string>();
if (defaultItems!= null)
{
    foreach (var key in defaultItems.AllKeys)
    {
        string val= defaultItems.GetValues(key).FirstOrDefault();
        temp.Add(val);
    }
}
    string[] arr = temp.ToArray();

这是从 XML 获取后代值的简单代码段,

  string[] arr1 = XDocument.Load(@"C:'xxx.xml").Descendants("Default")
                            .Select(element => element.Value).ToArray();
 string[] arr2 = XDocument.Load(@"C:'xxx.xml").Descendants("Maestro")
                            .Select(element => element.Value).ToArray();
 string[] arr3 = XDocument.Load(@"C:'xxx.xml").Descendants("Drive")
                            .Select(element => element.Value).ToArray();

使用此代码,。

您可以按如下方式读取配置文件的自定义部分,

var defaultSettings = ConfigurationManager.GetSection("Default") as NameValueCollection; //You can replace Default with any other node name like Maestro, Drive
string hostIp = defaultSettings["hostIP"].ToString(); //you can access any of the key value under Default node in your xml config now.

请注意,您可能需要从框架添加对 System.Configuration 的引用。