日期:2014-05-16  浏览次数:20422 次

js 读取本地 xml
/**
* 封装装载XML的方法,并返回XML文档的根元素节点。
* @param flag true时参数xml表示xml文档的名称;false时参数xml是一个字符串,其内容是一个xml文档
* @param xml 根据flag参数的不同表示xml文档的名称或一个xml文档的字符串表示
*/
function loadXML(flag,xml){
var xmlDoc;
//针对IE浏览器
if(window.ActiveXObject){
var aVersions = ["MSXML2.DOMDocument.6.0", "MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0",
"MSXML2.DOMDocument","Microsoft.XmlDom"];
for (var i = 0; i < aVersions.length; i++) {
try {
//建立xml对象
xmlDoc = new ActiveXObject(aVersions[i]);
break;
} catch (oError) {
}
}
if(xmlDoc != null){
//同步方式加载XML数据
xmlDoc.async = false;
//根据XML文档名称装载
if(flag == true){
xmlDoc.load(xml);
} else{
//根据表示XML文档的字符串装载
xmlDoc.loadXML(xml);
}
//返回XML文档的根元素节点。
return xmlDoc.documentElement;
}
} else{
//针对非IE浏览器
if(document.implementation && document.implementation.createDocument){
/*
第一个参数表示XML文档使用的namespace的URL地址
第二个参数表示要被建立的XML文档的根节点名称
第三个参数是一个DOCTYPE类型对象,表示的是要建立的XML文档中DOCTYPE部分的定义,通常我们直接使用null
这里我们要装载一个已有的XML文档,所以首先建立一个空文档,因此使用下面的方式
*/
xmlDoc = document.implementation.createDocument("","",null);
if(xmlDoc != null){
//根据XML文档名称装载
if(flag == true){
//同步方式加载XML数据
xmlDoc.async = false;
xmlDoc.load(xml);
} else{
//根据表示XML文档的字符串装载
var oParser = new DOMParser();
xmlDoc = oParser.parseFromString(xml,"text/xml");
}
//返回XML文档的根元素节点。
return xmlDoc.documentElement;
}
}
}
return null;
}

?

?例子

<?xml version="1.0" encoding="UTF-8"?>
<j2eeQuertion>
<question>
<queInfo>屏蔽TOMCAT中的文件列表</queInfo>
<url>0001.html</url>
</question>
<question>
<queInfo>js读取xml</queInfo>
<url>0002.html</url>
</question>
</j2eeQuertion>

?用法

var contentXML = loadXML(true,xmlUrl);

var que = contentXML.getElementsByTagName("question");

for(var i = 0 ; i < que.length ; i++){ 

var url = que[i].getElementsByTagName("url")[0].firstChild.data;

var tit = que[i].getElementsByTagName("queInfo")[0].firstChild.data;

alert(url);

alert(tit);

}

?注:保存文件的格式为utf-8!