类INI文件字符串解析,目前经常用于和客户的对接配置,因为和客户对接,经常各种参数都不一致(参数多少,参数名等,现场人员不好配置),配置界面做的乱七八糟,所以现在的解决方案是利用xml做一个示例配置文件,用于对接配置,客户配置的时候,拷贝示例,修改参数就可以了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Upload.Util
{
/// <summary>
/// Ini类似读取如:
/// 外挂url=http://ip:port/rminf/services/RmOutAccess?wsdl
/// 外挂接口序列号=
/// 卡口url=http://ip:port/rminf/services/Trans?wsdl
/// 卡口接口序列号=
/// </summary>
public class IniStringEx
{
private string content;
private List<KeyValuePair<string, string>> list;
public IniStringEx(string txt)
{
content = txt;
list = new List<KeyValuePair<string, string>>();
list.Clear();
string[] lines = content.Split('\n');
string key = "";
string value = "";
foreach(string line in lines)
{
//是否为null或空白
if (string.IsNullOrEmpty(line) || string.IsNullOrEmpty(line.Trim()))
continue;
//是否是注释
if (line.Trim().StartsWith(";"))
{
continue;
}
if (line.Contains("="))
{
key = "";
value = "";
//处理
string[] keyvalue = line.Split('=');
for(int i = 0;i<keyvalue.Length;i++)
{
if (i==0)//key值
{
key = keyvalue[i].Trim();
}
else if (i==1)
{
value = keyvalue[i].Trim();
}
else
{
value += keyvalue[i].Trim();
}
}
KeyValuePair<string, string> x = new KeyValuePair<string, string>(key, value);
list.Add(x);
}
}
}
/// <summary>
/// 获取key对应的Value值,读取不到设为默认值
/// </summary>
/// <param name="key"></param>
/// <param name="sdefault"></param>
/// <returns></returns>
public string GetValue(string key,string sdefault)
{
if (list == null || list.Count <= 0)
return sdefault;
try
{
KeyValuePair<string, string> x = list.Find(p => p.Key == key);
if (x.Key == key)
return x.Value;
}
catch
{
return sdefault;
}
return sdefault;
}
/// <summary>
/// 获取key对应的Value值,读取不到设为默认值
/// </summary>
/// <param name="key"></param>
/// <param name="sdefault"></param>
/// <returns></returns>
public string GetValue(string key)
{
return GetValue(key, "");
}
}
}
对应的xml配置示例文档
<?xml version="1.0" encoding="utf-8" ?>
<root>
<!--上传配置示例文档,对应选项,对接配置示例,Content内容输入时请靠边输入,按wuxi格式输入-->
<Upload Name="Wuxi">
<Content>
外挂url=http://ip:port/rminf/services/RmOutAccess?wsdl
外挂接口序列号=
卡口url=http://ip:port/rminf/services/Trans?wsdl
卡口接口序列号=
图片url=ftp://ip:port
图片上传用户名=
图片上传密码=
</Content>
</Upload>
</root>
对应参考配置界面