废话不多说了,直接给大家贴代码了,具体代码如下所示:
jquery读取xml文件
<!DOCTYPE html PUBLIC \"-//WC//DTD XHTML . Transitional//EN\" \"http://www.w.org/TR/xhtml/DTD/xhtml-transitional.dtd\">
<html xmlns=\"http://www.w.org//xhtml\">
<head>
<title>jQuery 读取XML文件-jQuery学习</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-\" />
<style type=\"text/css\">
h{color:Green;text-align:center;}
body{ background-color:#EEEEEE ; font-family:微软雅黑; }
#showresult{width:px;overflow:hidden;}
</style>
<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/../jquery.min.js\"></script>
<script type=\"text/javascript\">
$(document).ready(function () {
$(\"#read\").click(function () {
$.ajax({
//请求方式为get
type: \"GET\",
//xml文件位置
url: \"sitemap.xml\",
//返回数据格式为xml
dataType: \"xml\",
//请求成功完成后要执行的方法
success: function (xml) {
$(xml).find(\"url\").each(function (i) {
//i从开始,累加,如果要显示所有数据,将判断去除即可
if (i < ) {
//链接地址
var location = $(this).find(\"loc\").text();
//显示文字
var text = $(this).find(\"loc\").text();
//动态加载方法:链接地址
$(\"<a>\").attr(\"href\", location)
//显示文字
.text(text)
//设置样式
.css({ \"width\": \"px\", \"float\": \"left\", \"margin-bottom\": \"px\" })
//加载到div
.appendTo(\"#showresult\");
}
})
}
});
return false;
});
});
</script>
</head>
<body>
<div id=\"showresult\">
<h>jQuery读取XML文件</h>
<a id=\"read\" href=\"#\" style=\"width:px;\">点击读取XML</a>
</div>
</body>
</html>
js读取xml文件
<div id=\"blog_content\" class=\"blog_content\"><p><span style=\"color:#ff0000;\">city.xml 文件</span></p><p><?xml version=\"1.0\" encoding=\"UTF-8\"?>
<root name=\"中国\">
<province name=\"请选择省\" postcode=\"100000\" >
<city name=\"请选择市\" postcode=\"100100\" >
<area name=\"请选择区\" postcode=\"100101\" />
</city>
</province>
<province name=\"北京市\" postcode=\"110000\" >
<city name=\"市辖区\" postcode=\"110100\" >
<area name=\"东城区\" postcode=\"110101\" />
<area name=\"西城区\" postcode=\"110102\" />
<area name=\"崇文区\" postcode=\"110103\" />
<area name=\"宣武区\" postcode=\"110104\" />
<area name=\"朝阳区\" postcode=\"110105\" />
<area name=\"丰台区\" postcode=\"110106\" />
<area name=\"石景山区\" postcode=\"110107\" />
<area name=\"海淀区\" postcode=\"110108\" />
<area name=\"门头沟区\" postcode=\"110109\" />
<area name=\"房山区\" postcode=\"110111\" />
<area name=\"通州区\" postcode=\"110112\" />
<area name=\"顺义区\" postcode=\"110113\" />
<area name=\"昌平区\" postcode=\"110114\" />
<area name=\"大兴区\" postcode=\"110115\" />
<area name=\"怀柔区\" postcode=\"110116\" />
<area name=\"平谷区\" postcode=\"110117\" />
</city>
<city name=\"县\" postcode=\"110200\" >
<area name=\"密云县\" postcode=\"110228\" />
<area name=\"延庆县\" postcode=\"110229\" />
</city>
</province>
<province name=\"天津市\" postcode=\"120000\" >
<city name=\"市辖区\" postcode=\"120100\" >
<area name=\"和平区\" postcode=\"120101\" />
<area name=\"河东区\" postcode=\"120102\" />
<area name=\"河西区\" postcode=\"120103\" />
<area name=\"南开区\" postcode=\"120104\" />
<area name=\"河北区\" postcode=\"120105\" />
<area name=\"红桥区\" postcode=\"120106\" />
<area name=\"塘沽区\" postcode=\"120107\" />
<area name=\"汉沽区\" postcode=\"120108\" />
<area name=\"大港区\" postcode=\"120109\" />
<area name=\"东丽区\" postcode=\"120110\" />
<area name=\"西青区\" postcode=\"120111\" />
<area name=\"津南区\" postcode=\"120112\" />
<area name=\"北辰区\" postcode=\"120113\" />
<area name=\"武清区\" postcode=\"120114\" />
<area name=\"宝坻区\" postcode=\"120115\" />
</city>
<city name=\"县\" postcode=\"120200\" >
<area name=\"宁河县\" postcode=\"120221\" />
<area name=\"静海县\" postcode=\"120223\" />
<area name=\"蓟县\" postcode=\"120225\" />
</city>
</province></p><p> <province name=\"河北省\" postcode=\"130000\" >
<city name=\"石家庄市\" postcode=\"130100\" >
<area name=\"长安区\" postcode=\"130102\" />
<area name=\"桥东区\" postcode=\"130103\" />
<area name=\"桥西区\" postcode=\"130104\" />
<area name=\"新华区\" postcode=\"130105\" />
<area name=\"井陉矿区\" postcode=\"130107\" />
<area name=\"裕华区\" postcode=\"130108\" />
<area name=\"井陉县\" postcode=\"130121\" />
<area name=\"正定县\" postcode=\"130123\" />
<area name=\"栾城县\" postcode=\"130124\" />
<area name=\"行唐县\" postcode=\"130125\" />
<area name=\"灵寿县\" postcode=\"130126\" />
<area name=\"高邑县\" postcode=\"130127\" />
<area name=\"深泽县\" postcode=\"130128\" />
<area name=\"赞皇县\" postcode=\"130129\" />
<area name=\"无极县\" postcode=\"130130\" />
<area name=\"平山县\" postcode=\"130131\" />
<area name=\"元氏县\" postcode=\"130132\" />
<area name=\"赵县\" postcode=\"130133\" />
<area name=\"辛集市\" postcode=\"130181\" />
<area name=\"藁城市\" postcode=\"130182\" />
<area name=\"晋州市\" postcode=\"130183\" />
<area name=\"新乐市\" postcode=\"130184\" />
<area name=\"鹿泉市\" postcode=\"130185\" />
</city>
<city name=\"唐山市\" postcode=\"130200\" >
<area name=\"路南区\" postcode=\"130202\" />
<area name=\"路北区\" postcode=\"130203\" />
<area name=\"古冶区\" postcode=\"130204\" />
<area name=\"开平区\" postcode=\"130205\" />
<area name=\"丰南区\" postcode=\"130207\" />
<area name=\"丰润区\" postcode=\"130208\" />
<area name=\"滦县\" postcode=\"130223\" />
<area name=\"滦南县\" postcode=\"130224\" />
<area name=\"乐亭县\" postcode=\"130225\" />
<area name=\"迁西县\" postcode=\"130227\" />
<area name=\"玉田县\" postcode=\"130229\" />
<area name=\"唐海县\" postcode=\"130230\" />
<area name=\"遵化市\" postcode=\"130281\" />
<area name=\"迁安市\" postcode=\"130283\" />
</city>
<city name=\"秦皇岛市\" postcode=\"130300\" >
<area name=\"海港区\" postcode=\"130302\" />
<area name=\"山海关区\" postcode=\"130303\" />
<area name=\"北戴河区\" postcode=\"130304\" />
<area name=\"青龙满族自治县\" postcode=\"130321\" />
<area name=\"昌黎县\" postcode=\"130322\" />
<area name=\"抚宁县\" postcode=\"130323\" />
<area name=\"卢龙县\" postcode=\"130324\" />
</city>
<city name=\"邯郸市\" postcode=\"130400\" >
<area name=\"邯山区\" postcode=\"130402\" />
<area name=\"丛台区\" postcode=\"130403\" />
<area name=\"复兴区\" postcode=\"130404\" />
<area name=\"峰峰矿区\" postcode=\"130406\" />
<area name=\"邯郸县\" postcode=\"130421\" />
<area name=\"临漳县\" postcode=\"130423\" />
<area name=\"成安县\" postcode=\"130424\" />
<area name=\"大名县\" postcode=\"130425\" />
<area name=\"涉县\" postcode=\"130426\" />
<area name=\"磁县\" postcode=\"130427\" />
<area name=\"肥乡县\" postcode=\"130428\" />
<area name=\"永年县\" postcode=\"130429\" />
<area name=\"邱县\" postcode=\"130430\" />
<area name=\"鸡泽县\" postcode=\"130431\" />
<area name=\"广平县\" postcode=\"130432\" />
<area name=\"馆陶县\" postcode=\"130433\" />
<area name=\"魏县\" postcode=\"130434\" />
<area name=\"曲周县\" postcode=\"130435\" />
<area name=\"武安市\" postcode=\"130481\" />
</city>
<city name=\"邢台市\" postcode=\"130500\" >
<area name=\"桥东区\" postcode=\"130502\" />
<area name=\"桥西区\" postcode=\"130503\" />
<area name=\"邢台县\" postcode=\"130521\" />
<area name=\"临城县\" postcode=\"130522\" />
<area name=\"内丘县\" postcode=\"130523\" />
<area name=\"柏乡县\" postcode=\"130524\" />
<area name=\"隆尧县\" postcode=\"130525\" />
<area name=\"任县\" postcode=\"130526\" />
<area name=\"南和县\" postcode=\"130527\" />
<area name=\"宁晋县\" postcode=\"130528\" />
<area name=\"巨鹿县\" postcode=\"130529\" />
<area name=\"新河县\" postcode=\"130530\" />
<area name=\"广宗县\" postcode=\"130531\" />
<area name=\"平乡县\" postcode=\"130532\" />
<area name=\"威县\" postcode=\"130533\" />
<area name=\"清河县\" postcode=\"130534\" />
<area name=\"临西县\" postcode=\"130535\" />
<area name=\"南宫市\" postcode=\"130581\" />
<area name=\"沙河市\" postcode=\"130582\" />
</city>
<city name=\"保定市\" postcode=\"130600\" >
<area name=\"新市区\" postcode=\"130602\" />
<area name=\"北市区\" postcode=\"130603\" />
<area name=\"南市区\" postcode=\"130604\" />
<area name=\"满城县\" postcode=\"130621\" />
<area name=\"清苑县\" postcode=\"130622\" />
<area name=\"涞水县\" postcode=\"130623\" />
<area name=\"阜平县\" postcode=\"130624\" />
<area name=\"徐水县\" postcode=\"130625\" />
<area name=\"定兴县\" postcode=\"130626\" />
<area name=\"唐县\" postcode=\"130627\" />
<area name=\"高阳县\" postcode=\"130628\" />
<area name=\"容城县\" postcode=\"130629\" />
<area name=\"涞源县\" postcode=\"130630\" />
<area name=\"望都县\" postcode=\"130631\" />
<area name=\"安新县\" postcode=\"130632\" />
<area name=\"易县\" postcode=\"130633\" />
<area name=\"曲阳县\" postcode=\"130634\" />
<area name=\"蠡县\" postcode=\"130635\" />
<area name=\"顺平县\" postcode=\"130636\" />
<area name=\"博野县\" postcode=\"130637\" />
<area name=\"雄县\" postcode=\"130638\" />
<area name=\"涿州市\" postcode=\"130681\" />
<area name=\"定州市\" postcode=\"130682\" />
<area name=\"安国市\" postcode=\"130683\" />
<area name=\"高碑店市\" postcode=\"130684\" />
</city>
<city name=\"张家口市\" postcode=\"130700\" >
<area name=\"桥东区\" postcode=\"130702\" />
<area name=\"桥西区\" postcode=\"130703\" />
<area name=\"宣化区\" postcode=\"130705\" />
<area name=\"下花园区\" postcode=\"130706\" />
<area name=\"宣化县\" postcode=\"130721\" />
<area name=\"张北县\" postcode=\"130722\" />
<area name=\"康保县\" postcode=\"130723\" />
<area name=\"沽源县\" postcode=\"130724\" />
<area name=\"尚义县\" postcode=\"130725\" />
<area name=\"蔚县\" postcode=\"130726\" />
<area name=\"阳原县\" postcode=\"130727\" />
<area name=\"怀安县\" postcode=\"130728\" />
<area name=\"万全县\" postcode=\"130729\" />
<area name=\"怀来县\" postcode=\"130730\" />
<area name=\"涿鹿县\" postcode=\"130731\" />
<area name=\"赤城县\" postcode=\"130732\" />
<area name=\"崇礼县\" postcode=\"130733\" />
</city>
<city name=\"承德市\" postcode=\"130800\" >
<area name=\"双桥区\" postcode=\"130802\" />
<area name=\"双滦区\" postcode=\"130803\" />
<area name=\"鹰手营子矿区\" postcode=\"130804\" />
<area name=\"承德县\" postcode=\"130821\" />
<area name=\"兴隆县\" postcode=\"130822\" />
<area name=\"平泉县\" postcode=\"130823\" />
<area name=\"滦平县\" postcode=\"130824\" />
<area name=\"隆化县\" postcode=\"130825\" />
<area name=\"丰宁满族自治县\" postcode=\"130826\" />
<area name=\"宽城满族自治县\" postcode=\"130827\" />
<area name=\"围场满族蒙古族自治县\" postcode=\"130828\" />
</city>
<city name=\"沧州市\" postcode=\"130900\" >
<area name=\"新华区\" postcode=\"130902\" />
<area name=\"运河区\" postcode=\"130903\" />
<area name=\"沧县\" postcode=\"130921\" />
<area name=\"青县\" postcode=\"130922\" />
<area name=\"东光县\" postcode=\"130923\" />
<area name=\"海兴县\" postcode=\"130924\" />
<area name=\"盐山县\" postcode=\"130925\" />
<area name=\"肃宁县\" postcode=\"130926\" />
<area name=\"南皮县\" postcode=\"130927\" />
<area name=\"吴桥县\" postcode=\"130928\" />
<area name=\"献县\" postcode=\"130929\" />
<area name=\"孟村回族自治县\" postcode=\"130930\" />
<area name=\"泊头市\" postcode=\"130981\" />
<area name=\"任丘市\" postcode=\"130982\" />
<area name=\"黄骅市\" postcode=\"130983\" />
<area name=\"河间市\" postcode=\"130984\" />
</city>
<city name=\"廊坊市\" postcode=\"131000\" >
<area name=\"安次区\" postcode=\"131002\" />
<area name=\"广阳区\" postcode=\"131003\" />
<area name=\"固安县\" postcode=\"131022\" />
<area name=\"永清县\" postcode=\"131023\" />
<area name=\"香河县\" postcode=\"131024\" />
<area name=\"大城县\" postcode=\"131025\" />
<area name=\"文安县\" postcode=\"131026\" />
<area name=\"大厂回族自治县\" postcode=\"131028\" />
<area name=\"霸州市\" postcode=\"131081\" />
<area name=\"三河市\" postcode=\"131082\" />
</city>
<city name=\"衡水市\" postcode=\"131100\" >
<area name=\"桃城区\" postcode=\"131102\" />
<area name=\"枣强县\" postcode=\"131121\" />
<area name=\"武邑县\" postcode=\"131122\" />
<area name=\"武强县\" postcode=\"131123\" />
<area name=\"饶阳县\" postcode=\"131124\" />
<area name=\"安平县\" postcode=\"131125\" />
<area name=\"故城县\" postcode=\"131126\" />
<area name=\"景县\" postcode=\"131127\" />
<area name=\"阜城县\" postcode=\"131128\" />
<area name=\"冀州市\" postcode=\"131181\" />
<area name=\"深州市\" postcode=\"131182\" />
</city>
</province></p><p></root></p><p> </p><p><span style=\"color:#ff0000;\">由于文件太长这里就写这几个省吧</span></p><p><span style=\"color:#ff0000;\"> </span></p><p><span style=\"color:#ff0000;\">city.html</span></p><p><!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
<head>
<title>city.html</title>
<meta http-equiv=\"keywords\" content=\"keyword1,keyword2,keyword3\">
<meta http-equiv=\"description\" content=\"this is my page\">
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">
<!--<link rel=\"stylesheet\" type=\"text/css\" href=\"./styles.css\">-->
</head>
<body>
<div>
<span><select id=\"sheng\" style=\"width: 100px\"><option>
请选择省
</option></select></span>
<span><select id=\"shi\" style=\"width: 100px\">
<option>
请选择相应市
</option>
</select></span>
<span><select id=\"xian\" style=\"width: 100px\">
<option>
请选择相应区
</option>
</select></span>
</div>
</body>
</html>
<script type=\"text/javascript\">
<!--
function getXmlDoc() {
var xmldoc;
try{
//IE浏览器
xmlDoc = new ActiveXObject(\"microsoft.XMLDOM\");
}catch(e){
try{
//firefox 其他浏览器
xmlDoc = document.implementation.createDocument(\"\",\"\",null);
}catch(er){
alert(\"您的浏览器太低了\");
}
}
//关闭异步加载,确保在文档完全加载之前解析器不会继续脚本的执行
xmlDoc.async = false;
//转载xml文件
xmlDoc.load(\"city.xml\");
return xmlDoc;
}</p><p>window.onload = function() {
//通过方法获取对象
var xmlDoc = getXmlDoc();
//获取xml文件的根节点
var root = xmlDoc.documentElement;
//获得所有的省节点
var provinces = root.childNodes;
//获取页面中要显示的省的控件dom对象
var sheng = document.getElementById(\"sheng\");
var shi = document.getElementById(\"shi\");
var xian = document.getElementById(\"xian\");
//遍历所有的省
for(var i=0;i<provinces.length;i++) {
//查看该节点是否是元素节点 也是为了实现不同浏览器之间的兼容性问题
if(provinces[i].nodeType == 1) {
//创建option节点对象
var shengopt = document.createElement(\"option\");
//为省节点添加文本节点
shengopt.appendChild(document.createTextNode(provinces[i].getAttribute(\"name\")));
//为省节点添加属性
shengopt.setAttribute(\"value\",provinces[i].getAttribute(\"postcode\"));
//添加省道页面dom对象中
sheng.appendChild(shengopt);
}
}
//当省节点发生改变时 触发事件
sheng.onchange = function() {
//获取省节点所有的option对象的集合
var shengs = sheng.options;
//获取选中option对象的selectedIndex(下标值)
var num = shengs.selectedIndex;
//清空市 区
shi.length = 1;
xian.length = 1;
var ppostocode = shengs[num].getAttribute(\"value\");
//遍历所有的省
for(var i=0;i<provinces.length;i++) {
//查看该节点是否是元素节点 也是为了实现不同浏览器之间的兼容性问题
if(provinces[i].nodeType == 1) {
var postcode = provinces[i].getAttribute(\"postcode\");
if(postcode == ppostocode) {
var cities = provinces[i].childNodes;
shi.length = 1;
for(var i=0;i<cities.length;i++) {
if(cities[i].nodeType == 1) {
var shiopt = document.createElement(\"option\");
shiopt.appendChild(document.createTextNode(cities[i].getAttribute(\"name\")));
shiopt.setAttribute(\"value\",cities[i].getAttribute(\"postcode\"));;
shi.appendChild(shiopt);
}
}
break;
}
}
}
}
shi.onchange = function() {
var shis = shi.options;
var num = shis.selectedIndex;
var spostcode = shis[num].getAttribute(\"value\");
for(var i=0;i<provinces.length;i++) {
if(provinces[i].nodeType == 1) {
var cities = provinces[i].childNodes;
for(var j=0;j<cities.length;j++) {
if(cities[j].nodeType == 1) {
var postcode = cities[j].getAttribute(\"postcode\");
if(postcode == spostcode) {
xian.length = 1;
var areas = cities[j].childNodes;
for(var k=0;k<areas.length;k++) {
if(areas[k].nodeType == 1) {
var xianopt = document.createElement(\"option\");
xianopt.appendChild(document.createTextNode(areas[k].getAttribute(\"name\")));
xianopt.setAttribute(\"value\",areas[k].getAttribute(\"postcode\"));
xian.appendChild(xianopt);
}
}
break;
}
}
}
}
}
}
}</p><p>
//-->
</script>
<!--
DOM 解析中的浏览器差异所有现代浏览器都支持 W3C DOM 规范。不过,浏览器之间是有差异的。
重要的区别有两点:</p><p>1、加载 XML 的方式
//IE浏览器
var xmlDoc = new ActiveXObject(\"Microsoft.XMLDOM\");
//firefox 其他浏览器
var xmlDoc = document.implementation.createDocument(\"\",\"\",null);
2、处理空白和换行的方式
Firefox,以及其他一些浏览器,会把空的空白或换行作为文本节点来处理,而 Internet Explorer 不会这样。
思考: 那么怎么解决这种差异呢,下面是一种方法:
for(var i=0;i<provinces.length;i++){ //在输出所有的子节点的时候
if(provinces[i].nodeType==1){//在这里判断该节点是否是元素节点
}
}
要注意的是: xmlDoc.async = false; 写成这样 IE , fireFox 都可以
xmlDoc.async = \"false\"; IE 可以 fireFox 会报错
--></p></div>
以上代码是讲解js、jq读取xml文件的方法,希望大家喜欢。
本文地址:https://www.stayed.cn/item/19515
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我