|
/*** 封装装载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;} 注:js解析本地xml在chrome下是不能运行的,只能用ajax来读取xml
例子:
<?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>
js解析过程:
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! |
|