头闻号

上海正宏工贸有限公司

活性炭|建筑涂料|木器涂料|地坪漆|保温涂料|防腐涂料

首页 > 新闻中心 > 科技常识:用XML将机器内码转换为人们容易理解的信息
科技常识:用XML将机器内码转换为人们容易理解的信息
发布时间:2023-02-01 10:08:18        浏览次数:3        返回列表

今天小编跟大家讲解下有关用XML将机器内码转换为人们容易理解的信息 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关用XML将机器内码转换为人们容易理解的信息 的相关资料,希望小伙伴们看了有所帮助。

程序中通常会有一些错误代码或标识 为了程序中方便这些东西通常不会使用汉字 经常在程序中用的是一些FileError或数字。还有就是在编码中经常使用的枚举标识对象的状态。而通常这些信息会直接的或间接的现实给用户 可用户需要到的是容易理解的汉字描述。以前要么将这些标识和枚举的转换规则硬编码到程序中 要么就直接提示给用户。前者没有很好的扩展性 而后者则让用户一头雾水。现可以用流行的XML(配置文件)保存提示信息 然后用一个对象将机器中的内码转换为人们容易理解的信息。  转换对象如下:  ///   ///翻译类 将内部码翻译成容易理解的中文   ///   ///   ///根据配置文件中的信息 将系统内部码(错误码、成功码)翻译成中文(或人容易理解的语言)。   ///   publicstaticclassTranslation   ...{   privatestaticSystem.IO.FileSystemWatcherwatcher;   privatestaticXmldocumentcontent;   privatestaticstringconfigFile;   privatestaticobjectlocker=newobject();      ///   ///加载配置文件   ///   ///   publicstaticvoidConfigure(stringconfigFile)   ...{   LoadFile(configFile);   if(watcher!=null)   ...{   watcher.Dispose();   }   watcher=newFileSystemWatcher(Path.GetDirectoryName(configFile),Path.GetFileName(configFile));   watcher.Changed =newFileSystemEventHandler(watcher_Changed);   }      ///   ///加载默认配置文件   ///   publicstaticvoidConfigure()   ...{   if(System.Web.HttpContext.Current!=null)   ...{   Configure(System.Web.HttpContext.Current.Server.MapPath("~/translation.config"));   }   else   ...{   Configure(System.AppDomain.CurrentDomain.SetupInformation.Applicationbase "\" "translation.config");   }   }      ///   ///加载文件内容   ///   ///   privatestaticvoidLoadFile(stringconfigFile)   ...{   lock(locker)   ...{   Xmldocumentdoc=newXmldocument();   doc.Load(configFile);      content=doc;   Translation.configFile=configFile;   }   }      ///   ///当文件变更时 从新加载文件   ///   ///   ///   privatestaticvoidwatcher_Changed(objectsender,FileSystemEventArgse)   ...{   LoadFile(configFile);   }      ///   ///获取Enum的解释 如果Enum有Flag标记 则使用逗号分隔各个解释   ///   ///   ///   publicstaticstringGetEnumDescription(EnumenumValue)   ...{   returnGetEnumDescription(enumValue,",");   }      ///   ///获取Enum的解释 如果Enum有Flag标记 则使用sparator分隔各个解释   ///   ///   ///   ///   publicstaticstringGetEnumDescription(EnumenumValue,stringsparator)   ...{   Typetype=enumValue.GetType();      //检查类型是否有Flags特性   object[]attrs=type.GetCustomAttributes(typeof(FlagsAttribute),false);   if(attrs.Length>0)   ...{   StringBuilderbuilder=newStringBuilder();   Arrayarr=Enum.GetValues(type);   foreach(Enumenuinarr)//循环获取每一个值的解释   ...{   if((Convert.ToUInt64(enumValue)&Convert.ToUInt64(enu))==Convert.ToUInt64(enu))//判断是否有这个值   ...{   builder.Append(GetEnumDes(type,enu.ToString()));   builder.Append(sparator);   }   }   if(builder.Length!=0)//拿掉最后的分隔符   builder.Remove(builder.Length-sparator.Length,sparator.Length);   returnbuilder.ToString();   }   else   ...{   returnGetEnumDes(type,enumValue.ToString());   }   }      ///   ///获取某一Enum类型值的解释   ///   ///   ///   ///   privatestaticstringGetEnumDes(Typetype,stringvalue)   ...{   stringxquery="/translation/enum/" type.FullName "/" value;   XmlNodenode=content.SelectSingleNode(xquery);   if(node!=null)   returnnode.InnerText;   else   returnvalue;   }      ///   ///翻译指定值   ///   ///   ///   publicstaticstringGetValueDescription(objectobj)   ...{   returnGetValueDescription("default",obj);   }      ///   ///在指定组中翻译指定值   ///   ///   ///   ///   publicstaticstringGetValueDescription(stringgroup,objectobj)   ...{   if(obj==null)   return"null";      stringxquery="/translation/description[@group='" group "']/add[@key='" obj.ToString() "'][email protected]";   XmlNodenode=content.SelectSingleNode(xquery);   if(node==null)   returnobj.ToString();   else   returnnode.Value;   }   } 上一页12 下一页 阅读全文

来源:爱蒂网