程序中通常会有一些错误代码或标识,为了程序中方便这些东西通常不会使用汉字,经常在程序中用的是一些FileError或数字。还有就是在编码中经常使用的枚举标识对象的状态。而通常这些信息会直接的或间接的现实给用户,可用户需要到的是容易理解的汉字描述。以前要么将这
程序中通常会有一些错误代码或标识,为了程序中方便这些东西通常不会使用汉字,经常在程序中用的是一些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() "']/@value"; XmlNodenode=content.SelectSingleNode(xquery); if(node==null) returnobj.ToString(); else returnnode.Value; } } #p#
在这个对象使用前需要使用Configure方法来加载xml配置文件,默认的配置文件名称为translation.config。转换对象使用单例模式,使用了一个FileSystemWatcher对象来监视XML文件,如果XML有变化,则从新加载。查询XML使用了XPath表达式。
然后即可使用GetEnumDescription和GetValueDescription方法来翻译枚举和标识了。如果没有找到可以翻译的值,则会返回对象的ToString方法的返回值。
示例XML配置:
<?xmlversion="1.0"encoding="utf-8"?> <translation> <enum> <!--此出要用枚举的全名--> <Library.UserType> <Unknow>未知</Unknow> <AfterPayUser>后付费用户</AfterPayUser> <BeforePayUser>预付费用户</BeforePayUser> </Library.UserType> </enum> <descriptiongroup="default"> <addkey="FileErrorl"value="文件已损坏"/> </description> <descriptiongroup="skin"> <addkey="Default"value="默认皮肤"/> </description> <descriptiongroup="topic"> <addkey="space"value="<spanclass='red'>您剩余的空间不足,请您删除部分文件。</span><br/>"/> <addkey="yue"value="<spanclass='red'>您的余额不足,请尽快充值。</span><br/>"/> </description> </translation>
以上是使用XML将机器内码转换为人们能够理解的信息案例分享的详细内容。更多信息请关注PHP中文网其他相关文章!

XML在RSS中的核心作用是提供一种标准化和灵活的数据格式。1.XML的结构和标记语言特性使其适合数据交换和存储。2.RSS利用XML创建标准化格式,方便内容共享。3.XML在RSS中的应用包括定义feed内容的元素,如标题和发布日期。4.优势包括标准化和可扩展性,挑战包括文件冗长和严格语法要求。5.最佳实践包括验证XML有效性、保持简洁、使用CDATA和定期更新。

rssfeedsarexmldocuments usedforcontentAggregation and distribution.totransformthemintoreadableContent:1)parsethethexmlusinglibrarieslibrariesliblarieslikeparserinparserinpython.2)andledifferentifferentrssssssssssssssssssssssssssssssssssssssssssssssersions andpotentionparsingrorS.3)

JSONFeed是一种基于JSON的RSS替代方案,其优势在于简洁性和易用性。1)JSONFeed使用JSON格式,易于生成和解析。2)它支持动态生成,适用于现代Web开发。3)使用JSONFeed可以提升内容管理效率和用户体验。

如何构建、验证和发布RSSfeeds?1.构建:使用Python脚本生成RSSfeed,包含标题、链接、描述和发布日期。2.验证:使用FeedValidator.org或Python脚本检查RSSfeed是否符合RSS2.0标准。3.发布:将RSS文件上传到服务器,或使用Flask动态生成并发布RSSfeed。通过这些步骤,你可以有效管理和分享内容。

确保XML/RSSfeeds安全性的方法包括:1.数据验证,2.加密传输,3.访问控制,4.日志和监控。这些措施通过网络安全协议、数据加密算法和访问控制机制来保护数据的完整性和机密性。

XML是一种标记语言,用于存储和传输数据,RSS是一种基于XML的格式,用于发布频繁更新的内容。1)XML通过标签和属性描述数据结构,2)RSS定义特定标签发布和订阅内容,3)使用Python的xml.etree.ElementTree模块可以创建和解析XML,4)XPath表达式可查询XML节点,5)feedparser库可解析RSSfeed,6)常见错误包括标签不匹配和编码问题,可用xmllint验证,7)使用SAX解析器处理大型XML文件可优化性能。

XML是一种用于数据存储和交换的标记语言,RSS是基于XML的格式,用于发布更新内容。1.XML定义数据结构,适合数据交换和存储。2.RSS用于内容订阅,解析时使用专门库。3.解析XML可使用DOM或SAX,生成XML和RSS需正确设置元素和属性。

使用Python可以从XML/RSS转换到JSON。1)解析源数据,2)提取字段,3)转换为JSON,4)输出JSON。使用xml.etree.ElementTree和feedparser库解析XML/RSS,使用json库生成JSON数据。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

记事本++7.3.1
好用且免费的代码编辑器

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境