jQuery 行级解析读取XML文件(附源码)


Posted in Javascript onOctober 12, 2009

最近在做一个项目,因为页面使用了Cookie,所以要判断用户的浏览器是否支持Cookie,并提示用户如何开启浏览器的Cookie功能。同时,整个项目要配置多语言支持,包括中文、越南语、日语和英语,所以必须有语言配置文件。项目中应用jQuery解析读取XML语言配置文件来实现语言的调度。这是jQuery解析读取XML文件功能的测试源码,现拿出来分享。
目录结构:

jQuery 行级解析读取XML文件(附源码)
main.css文件代码:

@CHARSET "UTF-8"; 
* { 
margin: 0px; 
padding: 0px; 
} 
body { 
width: 800px; 
text-align: left; 
font-size:62.5%; 
font: normal 0.75em tahoma, helvetica, sans-serif; 
} 
#Message_error { 
height:16px; 
color:#000; 
line-height:16px; 
background:#fcc url(image/msg_error.png) no-repeat; 
margin-bottom:2px; 
border-bottom:#faa 1px solid; 
padding-left:20px; 
overflow:hidden; 
display:none; 
} 
#Message_success { 
height:16px; 
line-height:16px; 
color:#000; 
background:#cfc url(image/msg_success.png) no-repeat; 
margin-bottom:2px; 
border-bottom:#afa 1px solid; 
padding-left:20px; 
overflow:hidden; 
display:none; 
}

index.html文件代码:
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>jQuery行级读取XML文件</title> 
<link rel="stylesheet" href="main.css" href="main.css" type="text/css"/> 
<script type="text/javascript" src="jquery-1.3.2.js"></script> 
<script type="text/javascript" src="browser.js" ><script> 
</head> 
<body> 
<div id="Message_success"></div> 
<div id="Message_error"></div> 
</body> 
</html>

MsgConfig_zh.xml文件代码:
<?xml version="1.0" encoding="utf-8"?> 
<Msg-Config> 
<msg id="1" name="cookie-support"> 
<message>你的浏览器不支持Cookie,请开启浏览器的Cookie功能</message> 
<message-help>点击查看开启Cookie方法</message-help> 
<message-url>index.html</message-url> 
</msg> <msg id="2" name="load-xml"> 
<message>jQuery读取节点XML成功</message> 
</msg> 
</Msg-Config>

browser.js文件代码:
$(document).ready(function() { 
/* Check the browser if open Cookie support. 
* ----------------------------------------------------- */ 
//navigator.cookieEnabled == true意为浏览器支持Cookie功能 
//navigator.cookieEnabled == false时指浏览器没有开启Cookie功能 
//因为我的浏览器已经开启了Cookie功能,此处设为true是为了检测效果 
if(navigator.cookieEnabled == true){ 
$.ajax({ 
url:"MsgConfig_zh.xml", //XML文件相对路径 
type:"POST", //发送请求的方式 
dataType:"xml", //指明文件类型为“xml” 
timeout:1000, //超时设置,单位为毫秒 
error:function(xml){ //解析XML文件错误时的处理 
$("#Message_error").text("Error loading XML document (加载XML文件出错)"+xml); 
$("#Message_error").show(); 
}, 
success:function(xml){ 
//遍历Msg-Config,查找节点“msg”并且节点id=1的节点 
$(xml).find("Msg-Config>msg[id=1]").each(function(){ 
var Msg_value = $(this).find("message").text(); //获取子节点message的值 
var Msg_help = $(this).find("message-help").text(); //获取子节点message-help的值 
var Msg_url = $(this).find("message-url").text(); //获取子节点message-url的值 
//将获取的值经过组合以.html()方式添加到页面的层Message_error中 
//这里是用.html()方式,它会处理文本中的html代码 
//如果是用.text()方式,则会将诸如<a><font color>等HTML代码原封不动的输出到页面 
$("#Message_error").html(Msg_value+"    <font color='blue'><b><a href=""+Msg_url+"" href=""+Msg_url+"">"+Msg_help+"</a></b></font>"); 
//层Message_error本来是隐藏的,添加值之后使其显示 
$("#Message_error").show(); 
}); //遍历Msg-Config,查找节点“msg”并且节点id=2的节点 
$(xml).find("Msg-Config>msg[id=2]").each(function(){ 
var Msg_value = $(this).find("message").text(); //获取子节点message的值 
$("#Message_success").html(Msg_value); //将获取的值以.html()方式添加到页面的层Message_error中 
$("#Message_success").show(); 
}); 
} 
}); 
} 
});

最终结果展示:

jQuery 行级解析读取XML文件(附源码)
多余的就不用多说了,代码里标注了很详细的注释。

但在测试的过程中,我也遇到了一两个问题。首先XML文件的编码格式必须是UTF-8,即要保证<?xml version="1.0" encoding="utf-8"?>,否则就会出现乱码。因为jQuery的Ajax传输数据是用的UTF-8编码的。

其二,是关于JS文件的编码问题。按道理,JS文件中是不应该出现中文的。在测试中我加入了对中文的测试,如代码片段$("#Message_error").text("Error loading XML document (加载XML文件出错)"+xml); ,指在不能正确解析或找不到XML文件时的错误信息提示,在测试的时候就发现“加载XML文件出错”这几个汉字老显示是乱码。弄了好久才知道是JS文件本身编码的问题,在网上查了半天,也没有人明确地说明解决方法,即使有,也没有解决乱码的根本,况且大多数人都是在胡说八道,一个帖子转来转去,自己都没有测试过就拿出来害人。最后,我摸索了一个多小时,终于解决了JS文件编码问题,随之也解决了jQuery.html()函数和jQuery.text()函数在传输中文时的乱码问题。

关于jQuery.html()函数和jQuery.text()函数在传输中文时的乱码问题解决请关注我的另外一篇文章《JS文件本身编码转换》
文件打包下载

Javascript 相关文章推荐
js String对象中常用方法小结(字符串操作)
Jan 27 Javascript
基于jquery tab切换(防止页面刷新)
May 23 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
Apr 01 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
Apr 06 Javascript
jQuery实现网页顶部固定导航效果代码
Dec 24 Javascript
AngularJS 如何在控制台进行错误调试
Jun 07 Javascript
js定义类的几种方法(推荐)
Jun 08 Javascript
Move.js入门
Feb 08 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
Aug 24 jQuery
微信小程序云开发如何实现数据库自动备份实现
Aug 16 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
Aug 17 Javascript
JavaScript前端实现压缩图片功能
Mar 06 Javascript
jquery select选中的一个小问题
Oct 11 #Javascript
Jquery 表单取值赋值的一些基本操作
Oct 11 #Javascript
jquery 框架使用教程 AJAX篇
Oct 11 #Javascript
jQuery live( type, fn ) 委派事件实现
Oct 11 #Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
Oct 11 #Javascript
JS模拟的QQ面板上的多级可展开的菜单
Oct 10 #Javascript
js css样式操作代码(批量操作)
Oct 09 #Javascript
You might like
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
javascript事件问题
2009/09/05 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
玩转方法:call和apply
2014/05/08 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
jQuery页面弹出框实现文件上传
2017/02/09 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
如何在JavaScript中正确处理变量
2020/12/25 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python中requests模块的使用方法
2015/04/08 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
对python中list的五种查找方法说明
2020/07/13 Python
预备党员思想汇报范文
2013/12/29 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
设备技术员岗位职责
2015/04/11 职场文书
公安机关起诉意见书
2015/05/20 职场文书
老人与海读书笔记
2015/06/26 职场文书
消夏晚会主持词
2015/06/30 职场文书
Go 语言中 20 个占位符的整理
2021/10/16 Golang
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技
TS 类型收窄教程示例详解
2022/09/23 Javascript