public class ConfigInfo { public static ParametersHelper Parameters { get { return new ParametersHelper(); } } public class ParametersHelper { string fileName = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,JobConstValue.BUSINESS_CONFIG_FILE); public PerParameter this[string name] { get { string parameterStr = Utility.ExecuteXPathInFile(fileName, string.Format(@"/Parameters/Parameter[@name=‘{0}‘]", name.Trim())); if (parameterStr != null) { PerParameter returnObj = new PerParameter(name, parameterStr); return returnObj; } else { return null; } } } public class PerParameter { public PerParameter(string name, string parameterStr) { m_ParameterStr = parameterStr; m_Name = name; m_Value = Utility.ExecuteXPathInString(parameterStr, @"/Parameter/text()"); } string m_ParameterStr; private string m_Name; public string Name { get { return m_Name; } } public PerParameterAttributes Attributes { get { string[] temp = m_ParameterStr.GetSubString(@"(?<=\<Parameter\s+).+.(?=/?\>)"); if (temp != null && temp.Length > 0) return new PerParameterAttributes(temp[0]); else return null; } } string m_Value; public string Value { get { return m_Value; } } public List<PerParameter> Parameters { get { List<PerParameter> list = new List<PerParameter>(); XmlDocument doc = new XmlDocument(); doc.LoadXml(m_ParameterStr); XmlNodeList nodes = doc.SelectNodes("/Parameter/Parameter"); if (nodes != null && nodes.Count > 0) { foreach (XmlNode item in nodes) { list.Add(new PerParameter(item.Attributes["name"].InnerText, item.OuterXml)); } } return list; } } public PerParameter this[string name] { get { string parameterStr = Utility.ExecuteXPathInString(m_ParameterStr, string.Format(@"/Parameter/Parameter[@name=‘{0}‘]", name.Trim())); if (parameterStr != null) return new PerParameter(name, parameterStr); else return null; } } } public class PerParameterAttributes { public PerParameterAttributes(string attributes) { m_Attributes = attributes; } string m_Attributes = string.Empty; public string this[string name] { get { string[] results = m_Attributes.GetSubString(string.Format(@"(?<={0}\s*="").+", name)); if (results != null && results.Length > 0) { return results[0].ReplaceString(@""".*", string.Empty); } else return null; } } } } } 配置文件示例:
<?xml version="1.0"?> <Parameters> <Parameter name="WarehouseNumber"> <Parameter name="USA">9N</Parameter> <Parameter name="USB">9X</Parameter> <Parameter name="RoseWill">9R</Parameter> </Parameter> <Parameter name="HoldReason"> <Parameter name="B2BHoldReason">B2B Order waiting for approval</Parameter> <Parameter name="APIHoldReason">Hold By RuleSet API</Parameter> <Parameter name="HoldReasonForSO">Hold S.O</Parameter> </Parameter> <Parameter name="TestAccount"> <Parameter name="Account">7084500</Parameter> </Parameter> <Parameter name="SpecialItems"> <Parameter name="UPSLabelItem">99-993-001</Parameter> <Parameter name="GiftCardItem">00-999-157</Parameter> </Parameter> <Parameter name="DiscountAllocationRegex"> <Parameter name="RegexValue">^(DISCOUNT FOR COMBO #){1}\d{1,10}$|^(DISCOUNT FOR COMBO #){1}\d{1,10}( GIFT){1}$|^(DISCOUNT FOR AUTOADD #){1}\d{1,10}$</Parameter> </Parameter> </Parameters>
时间: 2024-11-07 02:24:22