读取xml数据装配到字典中之应用场景
前段时间看到支付宝设置里面有个多语言这个功能,蛮有意思的,就想双休没事的话做个相关的demo玩玩,可是礼拜六被妹子拽出去玩了一天,来大上海有大半年了,基本没有出去玩过,妹子说我是超级宅男,也不带她出去走走,妹子毕业后从大东北来到上海陪我一起打拼,想想蛮对不起她的。周六一天玩的很充实,走了很多路(一个星期的路都在这一天走完了),看了很多风景,回来洗个澡睡得很舒服,第二天也很清醒,其实除了写代码和玩游戏,发现双休出去走走真的挺不错的。附上几张图片,希望大家有时间多出去走走,也许有意外的收获啊!

星期天在家没事做,早上八点多就起来做点早饭送妹子上班去,回来就开始撸起代码,发现早上起来撸点代码,一天头脑都很清醒。
首先之前写过一个demo读取xml配置文件并装配到dictionary(key,value)中。这次让它在实际场景中发挥点作用,前面提到过支付宝的多语言切换功能,接下来我们就看怎么将他们联系起来并实现—基于Asp.net MVC的用户信息中英文切换功能。
1.定义xml文件相关节点
1.1 Ch_UserInfo.xml文件。
<?xml version="1.0" encoding="utf-8" ?>
<roots>
<data name="Language">
<value>语言:</value>
</data>
<data name="UserNo">
<value>用户序号:</value>
</data>
<data name="UserName">
<value>用户姓名:</value>
</data>
<data name="UserAge">
<value>用户年龄:</value>
</data>
<data name="Hobby">
<value>兴趣爱好:</value>
</data>
<data name="Country">
<value>国家:</value>
</data>
<data name="CardID">
<value>身份证号:</value>
</data>
<data name="Gender">
<value>性别:</value>
</data>
</roots>
1.2 En_UserInfo.xml文件。
<?xml version="1.0" encoding="utf-8" ?>
<roots>
<data name="Language">
<value>Language:</value>
</data>
<data name="UserNo">
<value>UserNo:</value>
</data>
<data name="UserName">
<value>UserName:</value>
</data>
<data name="UserAge">
<value>UserAge:</value>
</data>
<data name="Hobby">
<value>Hobby:</value>
</data>
<data name="Country">
<value>Country:</value>
</data>
<data name="CardID">
<value>CardID:</value>
</data>
<data name="Gender">
<value>Gender:</value>
</data>
</roots>
2.定义一个读取config文件的类库-NickZhao
public class NickZhao
{
public static string GetConfig(string str, bool Flags = true)
{
string value = string.Empty;
Dictionary<string, string> dic = new Dictionary<string, string>(); dic=Flags==true?GetXml("Ch"):GetXml("En"); if (dic.ContainsKey(str))
{
foreach (KeyValuePair<string, string> kv in dic)
{
if (kv.Key == str)
{
value = kv.Value;
break;
}
}
}
else
{
value = str;
}
return value;
} public static Dictionary<string, string> GetXml(string str)
{
string filePath = string.Empty;
Dictionary<string, string> dic = new Dictionary<string, string>(); filePath = System.Web.HttpContext.Current.Server.MapPath(string.Concat("", "Xml/" + str + "_UserInfo.xml")); if (System.IO.File.Exists(filePath))
{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(filePath);
XmlNodeList nodes = XmlDoc.SelectNodes("roots/data");
foreach (XmlNode node in nodes)
{
string key = node.Attributes["name"].Value.ToString();
string value = node.SelectSingleNode("value").InnerText;
dic.Add(key, value);
}
}
return dic;
}
}
3.创建一个UserController和一个UserInfo Model
public class UserController : Controller
{
//
// GET: /User/ public ActionResult Index(bool flags=true)
{
UserInfo userInfo = new UserInfo() { UserNo=,UserAge=,UserName="李伟",Gender="男",CardID="",Country="中国",Hobby="听歌,打篮球,游泳"};
if (!flags)
{
ViewData["Flags"] = false;
}
return View(userInfo);
} } public class UserInfo
{
public int UserNo { get; set; } public string UserName { get; set; } 25 public int UserAge { get; set; } 27 public string Country { get; set; } public string Gender { get; set; } public string Hobby { get; set; } public string CardID { get; set; } }
4.给UserContoller创建一个对应的view
@model MvcAjaxTest.Models.UserInfo
@{ bool Flags = true;
if (@ViewData["Flags"] != null)
{
Flags=(bool)@ViewData["Flags"];
}
}
<link rel="stylesheet" type="text/css" href="~/Content/css/bootstrap.css" />
<script src="~/Scripts/jquery-1.8.2.js"></script>
<script type="text/javascript">
$(function () {
if ("@Flags"=="True") {
$("#language").attr("value", "Chinese");
}
else {
$("#language").attr("value", "English");
}
}); function Change() { var selectedLanguage = $("#language option:selected").val();
if (selectedLanguage == "English") { window.location.href = "@Url.Action("Index", "User")?Flags=" + false;
}
else
{
window.location.href = "@Url.Action("Index", "User")?Flags=" + true;
}
}
</script> <div style="margin-left:820px">
<label for="name">@MvcAjaxTest.NickZhao.GetConfig("Language", Flags)</label>
<select class="form-control" id="language" onchange="Change()" style="width:110px">
<option value="Chinese">中文</option>
<option value="English">English</option>
</select>
</div>
<div id="part">
<input type="text" id="Test"/>
<div class="form-control">
<label>@MvcAjaxTest.NickZhao.GetConfig("UserNo", Flags)</label> <span>@Model.UserNo</span>
<label>@MvcAjaxTest.NickZhao.GetConfig("UserName", Flags)</label> <span>@Model.UserName</span>
</div>
<div class="form-control">
<label>@MvcAjaxTest.NickZhao.GetConfig("UserAge", Flags)</label> <span>@Model.UserAge</span>
<label>@MvcAjaxTest.NickZhao.GetConfig("Hobby", Flags)</label> <span>@Model.Hobby</span>
</div>
<div class="form-control">
<label>@MvcAjaxTest.NickZhao.GetConfig("Country", Flags)</label> <span>@Model.Country</span>
<label>@MvcAjaxTest.NickZhao.GetConfig("CardID", Flags)</label> <span>@Model.CardID</span>
</div>
<div class="form-control">
<label>@MvcAjaxTest.NickZhao.GetConfig("Gender", Flags)</label> <span>@Model.Gender</span>
</div>
</div>
5.效果:

做得有点简陋。望不吝赐教!
读取xml数据装配到字典中之应用场景的更多相关文章
- 读取xml数据装配到字典中
public Dictionary<string, string> GetXml() { Dictionary<string, string> dic = new Dictio ...
- XML序列化器读取XML数据
PS:标题我还真的不知道该怎么取比较好,大家将就下吧^_^ 场景:上周接到一个任务,要求我把ASP写的会员充值功能,用ASP.NET复制一遍,没有给我需求文档,就是让我根据代码去分析业务逻辑,然后看到 ...
- 用php读取xml数据
parser是php内置的一个用来处理xml的解析器,它的工作由三个事件组成:起始标签. 读取数据.结束标签. 也就是说在对xml进行处理的时候每当遇到起始标签.数据和结束标签的时候函数会做相应的动作 ...
- wcf序列化大对象时报错:读取 XML 数据时,超出最大
错误为: 访问服务异常:格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出 错: request.InnerException 消息是“反序 ...
- InnerException 消息是“反序列化对象 属于类型 *** 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。(注意细节)
WEB站点在调用我们WCF服务的时候,只要传入的参数过长,就报如下错误: 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: formD ...
- Web Service 或 WCF调用时读取 XML 数据时,超出最大字符串内容长度配额(8192)解决方法
1.调用服务时服务 当我们使用 Web Service 或 WCF 服务时,常把读取的数据转化为string类型(xml格式),当数据量达到一 定数量时,会出现以下异常: 错误:格式化程序尝试对消息反 ...
- 读取 XML 数据时,超出最大字符串内容长度配额 (8192)
格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://www.thermo.com/informatics/xmlns/limswebservice 进行反序列化时出错: Process ...
- 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: GetLzdtArticleResult。InnerException 消息是“反序列化对象 属于类型 lzdt.DTO.Dtolzdt[] 时出现错误。读取 XML 数据时,超出最大
当遇到这个错误的时候郁闷了好长时间报错是字符串长度过大可是修改了MaxStringContentLength”属性的值却不起作用最后才发现还是因为配置文件配置的问题在服务端 格式化程序尝试对消息反序列 ...
- (转)读取XML数据到treeView中
原文地址,只为收藏:http://www.cnblogs.com/ylwn817/archive/2011/12/15/2288512.html /// <summary> ...
随机推荐
- Jenkins 安装的HTML Publisher Plugin 插件无法展示ant生成的JunitReport报告
最近在做基于jenkins ant junit 的测试持续集成,单独ant junit生成的junitreport报告打开正常,使用Jenkins的HTML Publisher Plugin 插件无 ...
- nginx配置反向代理或跳转出现400问题处理记录
午休完上班后,同事说测试站点访问接口出现400 Bad Request Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...
- C#给PDF文档添加文本和图片页眉
页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...
- SSH实战 · 唯唯乐购项目(上)
前台需求分析 一:用户模块 注册 前台JS校验 使用AJAX完成对用户名(邮箱)的异步校验 后台Struts2校验 验证码 发送激活邮件 将用户信息存入到数据库 激活 点击激活邮件中的链接完成激活 根 ...
- 深入理解C#
简单认识.NET框架 (1)首先我们得知道 .NET框架具有两个主要组件:公共语言进行时CLR(Common Language Runtime)和框架类库FCL(Framework Class ...
- 虚拟dom与diff算法 分析
好文集合: 深入浅出React(四):虚拟DOM Diff算法解析 全面理解虚拟DOM,实现虚拟DOM
- x:bind不支持样式文件 或 此Xaml文件必须又代码隐藏类才能使用{x:Bind} 解决办法
这两天学习UWP开发,发现一个很有趣的问题,就是我题目中的描述的. 我习惯了在ResourceDictionary中写样式文件,但是发现用x:Bind时会有问题 如果是写在Style里,则提示 “x: ...
- win8.1硬盘安装ubuntu14.04双系统
在网上找了很多方法都失败了,原因是大多数方法都是用mbr方式安装的,如grub4dos,easybcd.以至于连自己都怀疑win8能不能用硬盘安装,差点就去买个u盘来安装了,就在打算放弃的时候在ubu ...
- 关键帧动画:@keyframes
关键帧动画:@keyframes: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- Android——eclipse下运行android项目报错 Conversion to Dalvik format failed with error 1解决
在eclipse中导入android项目,项目正常没有任何错误,但是运行时候会报错,(clean什么的都没用了.....)如图: 百度大神大多说是jdk的问题,解决: 右键项目-Properties如 ...