Parameter配置文件获取

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(@"(?<=<Parameters+).+.(?=/?>)");
                        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>

  

  

原文地址:https://www.cnblogs.com/Wolfmanlq/p/3996518.html