读取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> ...
随机推荐
- ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区
前言: Aries框架毕竟是开发框架,所以重点还是要写代码的,这样开发人员才不会失业,哈. 步骤1:新建html 建一个Html,主要有三步: 1:引入Aries.Loader.js 2:弄一个tab ...
- .NET Core系列 :4 测试
2016.6.27 微软已经正式发布了.NET Core 1.0 RTM,但是工具链还是预览版,同样的大量的开源测试库也都是至少发布了Alpha测试版支持.NET Core, 这篇文章 The Sta ...
- 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file
我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...
- 转:serialVersionUID作用
汗,以前学了还忘了... Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本 ...
- [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?
你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...
- 小兔JS教程(四)-- 彻底攻略JS数组
在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...
- CSS3自定义滚动条样式 -webkit-scrollbar(转)
有没有觉得浏览器自带的原始滚动条很不美观,同时也有看到很多网站的自定义滚动条显得高端,就连chrome32.0开发板都抛弃了原始的滚动条,美观多了.那webkit浏览器是如何自定义滚动条的呢? 前言 ...
- git init和git init -bare区别
1 Git init 和 git init –bare 的区别 用"git init"初始化的版本库用户也可以在该目录下执行所有git方面的操作.但别的用户在将更新push上来的 ...
- .Net Core 系列:1、环境搭建
前言: 2016年6月28日微软宣布发布 .NET Core 1.0.ASP.NET Core 1.0 和 Entity Framework Core 1.0. .NET Core是微软在两年前发起的 ...
- 微软.Net 社区虚拟大会 -- 首日重点(dotnetConf 2016)
6月7日--9日,为期三天的微软.NET社区虚拟大会正式在 Channel9 上召开. 在 Scott Hunter, Miguel de Icaza (Xamarin CTO) , ScottHan ...