相关文章
没钱,如何通过网络创业?
揭开网上利用QQ一天上百元收入创意的真相(上)中华...
北京网站建设应用DIV+CSS编码时容易犯的一些错误
北京网站设计XHTML基础问答
网站制作CSS滤镜:blur属性
北京网站设计下拉菜单全攻略之Dreamweaver篇
北京网页设计第二十三节 Timeline
北京网站建设Flash视频教程:3.4 变形动画
企通互联Dreamweaver CS3 Beta界面功能大曝光
网站设计用FrontPage 2003发布您的网站
品牌理念
北京网站建设最佳合作伙伴
北京网站建设专家企通互联
竭诚为您提供网站建设服务!
友好连接
文章搜索
你的位置:首页 >> 网站制作 >> www.qt-net.com北京网页设计用XML将机器内码转换为容易理解的信息
www.qt-net.com北京网页设计用XML将机器内码转换为容易理解的信息
![]() |
转换对象如下:
以下是引用片段:网站设计
/**//// www.qt-net.com
/// 翻译类,将内部码翻译成容易理解的中文 网站制作
/// 企通互联
/// 网站建设
/// 根据配置文件中的信息,将系统内部码(错误码、成功码)翻译成中文(或人容易理解的语言)。 北京网页设计
/// 网站制作
public static class Translation 网页设计 网站建设
...{ 北京网站制作
private static System.IO.FileSystemWatcher watcher; 网站建设
private static XmlDocument content; 北京网页设计
private static string configFile; 网页设计
private static object locker = new object(); 北京网站设计
北京网页设计
/**//// 北京网页设计
/// 加载配置文件 北京网页设计
/// 北京网站设计
/// 北京网站设计
public static void Configure(string configFile) 北京网站设计
...{ 网页设计
LoadFile(configFile); 北京网站建设 www.qt-net.com
if (watcher != null) 北京网站建设
...{ 北京网站建设
watcher.Dispose(); 网页设计
} 北京网页设计
watcher = new FileSystemWatcher(Path.GetDirectoryName(configFile), Path.GetFileName(configFile)); 网页设计
watcher.Changed += new FileSystemEventHandler(watcher_Changed); 网站制作
} 企通互联
北京网站建设
/**//// 北京网站设计
/// 加载默认配置文件 www.qt-net.com
/// www.qt-net.com
public static void Configure() 网页设计
...{ 网页设计
if (System.Web.HttpContext.Current != null) 网站制作
...{ 网页设计
Configure(System.Web.HttpContext.Current.Server.MapPath("~/translation.config")); 企通互联
} 网站设计 网站制作
else www.qt-net.com
...{ www.qt-net.com
Configure(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "\" + "translation.config"); 网站制作
} 北京网站制作
} 北京网站制作
北京网站制作
/**//// 网站建设
/// 加载文件内容 北京网站设计
/// 网站建设
/// 网站制作
private static void LoadFile(string configFile) 北京网页设计
网页设计 ...{ www.qt-net.com
lock (locker) 北京网页设计
...{ 北京网站建设
XmlDocument doc = new XmlDocument(); 网页设计
doc.Load(configFile); 网站设计
网页设计 北京网站建设
content = doc; 网页设计
Translation.configFile = configFile; 北京网站制作
} 网页设计
} www.qt-net.com
北京网站建设
/**//// 北京网站制作
/// 当文件变更时,从新加载文件 网站设计
/// 企通互联
/// 网站制作
/// 网站设计
private static void watcher_Changed(object sender, FileSystemEventArgs e) 北京网页设计
...{ 网站设计
LoadFile(configFile); 北京网站设计
} 网站建设
网站制作
/**//// 北京网站建设
/// 获取Enum的解释,如果Enum有Flag标记,则使用逗号分隔各个解释 网页设计
/// 北京网站设计
/// 网站设计
/// 网页设计
public static string GetEnumDescription(Enum enumValue) 网站设计
...{ 北京网站设计
return GetEnumDescription(enumValue, ","); 北京网页设计
} 北京网站建设
北京网站设计
/**//// 网页设计
/// 获取Enum的解释,如果Enum有Flag标记,则使用sparator分隔各个解释 企通互联
/// 企通互联
/// 网站建设
/// 北京网站设计
/// www.qt-net.com
public static string GetEnumDescription(Enum enumValue, string sparator) 网页设计
...{ 北京网站制作
Type type = enumValue.GetType(); www.qt-net.com
北京网站制作北京网站建设
//检查类型是否有Flags特性 企通互联
企通互联 object[] attrs = type.GetCustomAttributes(typeof(FlagsAttribute), false); 北京网站建设
if (attrs.Length > 0) 网站设计
...{ 企通互联
StringBuilder builder = new StringBuilder(); 北京网站建设
Array arr = Enum.GetValues(type); 企通互联
foreach (Enum enu in arr) //循环获取每一个值的解释 企通互联
...{ 网站建设
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); 北京网站建设
return builder.ToString(); 北京网站设计
} 北京网页设计
else www.qt-net.com
...{ 网页设计
return GetEnumDes(type, enumValue.ToString()); 北京网站制作
北京网页设计 } 北京网页设计
} 北京网站设计
北京网页设计
/**//// www.qt-net.com
/// 获取某一Enum类型值的解释 网站制作
/// 网站建设
/// 企通互联
/// 网站建设
/// 北京网站建设
private static string GetEnumDes(Type type, string value) 北京网站设计
...{ 网页设计
string xquery = "/translation/enum/" + type.FullName + "/" + value; www.qt-net.com
XmlNode node = content.SelectSingleNode(xquery); www.qt-net.com
if (node != null) 北京网站建设
return node.InnerText; 网站制作
else 网页设计
return value; 网页设计
} 北京网站建设
网页设计
/**//// www.qt-net.com
/// 翻译指定值 北京网站设计
/// 北京网站制作
/// 网站建设
/// 网站设计
public static string GetValueDescription(object obj) 网站制作
...{ 网站设计
return GetValueDescription("default", obj); 北京网站建设
} www.qt-net.com
网站建设
/**//// 网站制作
/// 在指定组中翻译指定值 网站设计
/// 网站设计
/// 企通互联
/// 北京网站建设
/// www.qt-net.com
public static string GetValueDescription(string group, object obj) 网站建设
...{ 网站建设
if (obj == null) 北京网页设计
return "null"; 网站设计
企通互联
string xquery = "/translation/description[@group='" + group + "']/add[@key='" + obj.ToString() + "']/@value"; 网站建设
XmlNode node = content.SelectSingleNode(xquery); 网站建设
if (node == null) 网站制作
return obj.ToString(); 网站制作
else 北京网页设计
return node.Value; 企通互联
} 北京网站设计
}
在这个对象使用前需要使用Configure方法来加载xml配置文件,默认的配置文件名称为translation.config。转换对象使用单例模式,使用了一个FileSystemWatcher对象来监视XML文件,如果XML有变化,则从新加载。查询XML使用了XPath表达式。
然后即可使用GetEnumDescription和GetValueDescription方法来翻译枚举和标识了。如果没有找到可以翻译的值,则会返回对象的ToString方法的返回值。
示例XML配置:
以下是引用片段:北京网站建设
<?xml version="1.0" encoding="utf-8" ?> 企通互联
<translation> 北京网站制作
<enum> 北京网站建设
<!--此出要用枚举的全名--> 网站建设
<Library.UserType> 网页设计
<Unknow>未知</Unknow> 网站建设
<AfterPayUser>后付费用户</AfterPayUser> 北京网页设计
<BeforePayUser>预付费用户</BeforePayUser> 企通互联
</Library.UserType> 网站设计
</enum> 北京网站建设
<description group="default"> 北京网站设计
<add key="FileErrorl" value="文件已损坏" /> 网站建设
</description> 网站建设
<description group="skin"> 北京网站制作
<add key="Default" value="默认皮肤" /> 企通互联
</description> 企通互联
<description group="topic"> 网站建设
<add key="space" value="<span class='red'>您剩余的空间不足,请您删除部分文件。</span><br/>" /> 北京网站制作
<add key="yue" value="<span class='red'>您的余额不足,请尽快充值。</span><br />" /> 企通互联
</description> 北京网站设计
</translation>
网站建设