本篇內容介紹了“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;
}
}
“XML怎么將機器內碼轉換為人們容易理解的信息”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。