unity 读取webconfig文件的SQL配置信息

核能气质少年 提交于 2020-03-09 16:53:38

由于公司变动,以前都是有ini作为配置文件的,这次要改为web的config格式作为配置文件-->xxx.config格式

unity 版本位5.6f,

查询了很多的资料,大部分都要用Unity.Configuration,但是不知为啥我的unity无法支持其dll文件,因为.net格式太低,后来我更改了版本,换成了2018.3.5,他可以支持.net4x

后来才发现并没有啥用,而且由于配置只需要读取最为简单的  <add key="MySql" value=“    ”/>这其中一个值即可。

因此改为了寻常读取xml的方法。

web.config如下

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>

    <add key="MySql" value="……"/>
    <add key="OfflineMySql" value="……"/>

  </appSettings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

unity使用其自带的System.Xml.Linq的dll方法,代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using System.Xml.Linq;
using System.Xml;
using System.IO;

public class LoadConfig : MonoBehaviour
{
    public static string serverSql = null;
    public static string offlineSql = null;
    //在所有代码执行前执行
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    static void OnConfigLoaded()
    {
        //config存放路径
        string configPath = "F:/work/web.config";
        XmlDocument configInfo = new XmlDocument();
        if (configPath != null)
        {
            //一层层的拨开xml
            configInfo.Load(configPath);
            XmlNode configuration = configInfo.SelectSingleNode("configuration");
            XmlNode appSettings = configuration.SelectSingleNode("appSettings");
            XmlNodeList infoNodeList = appSettings.ChildNodes;
            //用foreach查找add key的值
            foreach (XmlElement xe in infoNodeList)
            {
                if (xe.Attributes["key"].Value == "MySql")
                {
                   // 获取其相应的value值
                    serverSql = xe.Attributes["value"].Value;
                }
                if (xe.Attributes["key"].Value == "OfflineMySql")
                {
                   // 获取其相应的value值
                    offlineSql = xe.Attributes["value"].Value;
                }

            }
            if (serverSql == null || offlineSql == null)
            {
                if (serverSql == null)
                {
                    Debug.Log("缺少服务器数据库配置信息,请查看配置文件");
                }
                if (offlineSql == null)
                {
                    Debug.Log("缺少本地数据库配置信息,请查看配置文件");
                }
            }
        }
        else Debug.Log("未找到配置文件");

    }

}

获取出来之后,由于是sql配置信息,所以需要解析字符串,sql配置信息示例:

"OfflineMySql" value="Server=127.0.0.1;Port=3306;Database=sqlcs;Uid=root;Pwd=111111;"/>

 void Awake()
    {    
        //调用解析
        ConfigPars(LoadConfig.serverSql, serverSqlConnetList);
        ConfigPars(LoadConfig.offlineSql, offlinSqlConnetList);
    }

  /// <summary>
    /// 解析config的数据库信息字符串
    /// </summary>
    /// <param name="sql"></param>
    /// <param name="list"></param>
    public void ConfigPars(string sql, List<string> list)
    {
        if (list != null)
        {
            list.Clear();
        }
        var result = sql.Split(';').Select(s => s.Split('=').LastOrDefault());
        result.ToList().ForEach(s => list.Add(s));
    }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!