コード例 #1
0
        public static void ReadXml(string fileName,
                                   string basePathDir,
                                   ref CustomShellType.Basic basicSetting,
                                   ref CustomShellType.MainCode mainCode)
        {
            string filePath = Path.Combine(basePathDir, fileName);

            try
            {
                XmlDocument xml = new XmlDocument();                              //初始化一个xml实例
                xml.Load(filePath);                                               //导入指定xml文件
                XmlNode     root      = xml.SelectSingleNode("/customShellType"); //指定一个节点
                XmlNodeList childlist = root.ChildNodes;                          //获取节点下所有直接子节点
                foreach (XmlNode child in childlist)
                {
                    if (child.Name == "basicSetting")
                    {
                        basicSetting = ReadBasicSettingNode(child);
                    }
                    else if (child.Name == "mainCodeSetting")
                    {
                        mainCode = ReadMainCodeSettingNode(child);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
コード例 #2
0
 private static CustomShellType.MainCode ReadMainCodeSettingNode(XmlNode child)
 {
     CustomShellType.MainCode mainCode = new CustomShellType.MainCode();
     foreach (XmlNode c in child.ChildNodes)
     {
         if (c.Name == "item")
         {
             mainCode.Item = c.InnerText;
         }
         else if (c.Name == "funcCodeParam")
         {
             mainCode.FuncCodeParam = ReadParamNode(c);
         }
     }
     return(mainCode);
 }
コード例 #3
0
 private static CustomShellType.MainCode ReadMainCodeSettingNode(XmlNode child)
 {
     CustomShellType.MainCode mainCode = new CustomShellType.MainCode();
     foreach (XmlNode c in child.ChildNodes)
     {
         if (c.Name == "item")
         {
             mainCode.Item = c.InnerText;
         }
         else if (c.Name == "funcCodeParam")
         {
             mainCode.FuncCodeParam = ReadParamNode(c);
         }
     }
     return mainCode;
 }
コード例 #4
0
ファイル: InitWorker.cs プロジェクト: kevins1022/Altman
		/// <summary>
		/// 注册CustomShellType
		/// </summary>
		public static void RegisterCustomShellType(string customShellTypePath)
		{
			//清空CustomShellTypeProvider
			CustomShellTypeProvider.Clear();

			//读取shelltype列表(.type)
			List<string> typeList = XmlHelper.LoadXMlList(customShellTypePath, "type");
			//1.注册CustomShellType
			foreach (string c in typeList)
			{
				var basicSetting = new CustomShellType.Basic();
				var mainCodeSetting = new CustomShellType.MainCode();

				//读取basicSetting,mainCodeSetting
				CustomShellTypeXmlHandle.ReadXml(c, customShellTypePath, ref basicSetting, ref mainCodeSetting);
				//生成customShellType
				var customShellType = new CustomShellType(basicSetting, mainCodeSetting);
				//将CustomShellType注册到全局
				CustomShellTypeProvider.AddShellType(customShellType);
			}

			//读取funcTree定义列表(.tree)       
			List<string> funcTreeList = XmlHelper.LoadXMlList(customShellTypePath, "tree");
			//2.初始化funcTree方法树
			foreach (string c in funcTreeList)
			{
				var treeInfoList = new List<CustomShellType.TreeInfo>();

				//读取funcCodeList
				CustomShellTypeXmlHandle.ReadXml(c, customShellTypePath, ref treeInfoList);
				//将func注册到CustomShellType
				foreach (CustomShellType.TreeInfo info in treeInfoList)
				{
					/***
					 * 获取节点的类型
					 * 允许多个类型,以英文逗号分隔,如"aspx,aspx1"
					 */
					string[] types = info.Type.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
					foreach (string type in types)
					{
						CustomShellType shellType = CustomShellTypeProvider.GetShellType(type);
						FuncTreeNode node = shellType.AddFuncTreeNode(info.Path);
						node.Info = info.Info;
					}
				}
			}

			//读取funcCode列表(.func)
			List<string> funcList = XmlHelper.LoadXMlList(customShellTypePath, "func");
			//3.注册funcCode到functree
			foreach (string c in funcList)
			{
				var funcCodeList = new List<CustomShellType.FuncCode>();

				//读取funcCodeList
				CustomShellTypeXmlHandle.ReadXml(c, customShellTypePath, ref funcCodeList);
				//将func注册到CustomShellType
				foreach (CustomShellType.FuncCode func in funcCodeList)
				{
					/***
					 * 获取func的类型
					 * type允许多个类型,以英文逗号分隔,如"aspx,aspx1"
					 */
					string[] types = func.Type.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
					foreach (string type in types)
					{
						CustomShellType shellType = CustomShellTypeProvider.GetShellType(type);
						//获取映射节点
						//path为xpath形式,如"/cmder",
						//允许多个,以英文逗号分隔,如"/cmder,/cmder1"
						string[] xpaths = func.Path.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
						foreach (string xpath in xpaths)
						{
							shellType.AddFuncCode(xpath, func);
						}
					}
				}
			}
		}
コード例 #5
0
        /// <summary>
        /// 写xml文件
        /// </summary>
        public static void WriteXml(string shellTypeName,
                                    string basePathDir,
                                    CustomShellType.Basic basicSetting,
                                    CustomShellType.MainCode mainCode,
                                    List <CustomShellType.FuncCode> funcCodeList)
        {
            XmlTextWriter xmlWriter = null;
            string        filename  = Path.Combine(basePathDir, shellTypeName);

            try
            {
                xmlWriter            = new XmlTextWriter(filename, Encoding.UTF8);
                xmlWriter.Formatting = Formatting.Indented;
                xmlWriter.WriteStartDocument();

                xmlWriter.WriteStartElement("customShellType");
                {
                    //BasicSetting
                    xmlWriter.WriteStartElement("basicSetting");
                    {
                        xmlWriter.WriteStartElement("name");
                        xmlWriter.WriteString(shellTypeName.Substring(0, shellTypeName.Length - 4));
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("serviceExample");
                        xmlWriter.WriteCData(basicSetting.ServiceExample);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("mainCodeParam");
                        {
                            xmlWriter.WriteStartAttribute("location");
                            xmlWriter.WriteString(basicSetting.MainCodeParam.Location);
                            xmlWriter.WriteEndAttribute();

                            xmlWriter.WriteStartAttribute("encrymode");
                            xmlWriter.WriteString(basicSetting.MainCodeParam.EncryMode.ToString());
                            xmlWriter.WriteEndAttribute();

                            xmlWriter.WriteString(basicSetting.MainCodeParam.Name);
                        }
                        xmlWriter.WriteEndElement();
                    }
                    xmlWriter.WriteEndElement();

                    //MainCodeSetting
                    xmlWriter.WriteStartElement("mainCodeSetting");
                    {
                        xmlWriter.WriteStartElement("funcCodeParam");
                        {
                            xmlWriter.WriteStartAttribute("location");
                            xmlWriter.WriteString(mainCode.FuncCodeParam.Location);
                            xmlWriter.WriteEndAttribute();

                            xmlWriter.WriteStartAttribute("encrymode");
                            xmlWriter.WriteString(mainCode.FuncCodeParam.EncryMode.ToString());
                            xmlWriter.WriteEndAttribute();

                            xmlWriter.WriteString(mainCode.FuncCodeParam.Name);
                        }
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("item");
                        xmlWriter.WriteCData(mainCode.Item);
                        xmlWriter.WriteEndElement();
                    }
                    xmlWriter.WriteEndElement();

                    //FuncCodeSetting
                    xmlWriter.WriteStartElement("funcCodeSetting");
                    {
                        foreach (CustomShellType.FuncCode func in funcCodeList)
                        {
                            xmlWriter.WriteStartElement("func");
                            {
                                xmlWriter.WriteStartElement("name");
                                xmlWriter.WriteString(func.Name);
                                xmlWriter.WriteEndElement();

                                foreach (CustomShellType.ParamStruct par in func.FuncParams)
                                {
                                    xmlWriter.WriteStartElement("funcParameter");
                                    {
                                        xmlWriter.WriteStartAttribute("location");
                                        xmlWriter.WriteString(par.Location);
                                        xmlWriter.WriteEndAttribute();

                                        xmlWriter.WriteStartAttribute("encrymode");
                                        xmlWriter.WriteString(par.EncryMode.ToString());
                                        xmlWriter.WriteEndAttribute();

                                        xmlWriter.WriteString(par.Name);
                                    }
                                    xmlWriter.WriteEndElement();
                                }

                                xmlWriter.WriteStartElement("item");
                                xmlWriter.WriteCData(func.Item);
                                xmlWriter.WriteEndElement();
                            }
                            xmlWriter.WriteEndElement();
                        }
                    }
                    xmlWriter.WriteEndElement();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                xmlWriter.Close();
            }
        }