JavaScript XML操作 封裝類(lèi)
更新時(shí)間:2009年07月01日 01:01:59 作者:
最近研究XML 用JavaScript寫(xiě)了一個(gè)簡(jiǎn)單的XML讀取的操作類(lèi)發(fā)給大家分享一下 可兼容 IE 火狐 Safari Chrome
6月30日下午 新修改了一下
復(fù)制代碼 代碼如下:
function XMLObject()
{
this.isIE=true;
if (window.ActiveXObject){isIE=true;}else{isIE=false;}
var node_xml;
var xmlDoc;
if (isIE){
xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
}
else{
if (document.implementation && document.implementation.createDocument){
xmlDoc = document.implementation.createDocument("","",null);
}
}
xmlDoc.async = false;
xmlDoc.resolveExternals = false;
xmlDoc.validateOnParse = false;
xmlDoc.preserveWhiteSpace = true;
//從字符串創(chuàng)建XML對(duì)象(XML字符串)
this.LoadXMLForString=function(XMLStr)
{
if(isIE)
{
xmlDoc.loadXML(XMLStr);
}
else
{
var oParser = new DOMParser();
xmlDoc = oParser.parseFromString(XMLStr,"text/xml");
}
}
//從外部文件創(chuàng)建XML文件(文件路徑)
this.getXMLForURL=function(url)
{
//xmlDoc.load(url);
if (isIE){
xmlDoc.load(url);
}
else
{
xmlDoc = getXML(url).responseXML;
}
}
//獲得節(jié)點(diǎn)字節(jié)點(diǎn)
this.getXMLArray=function (name) {
var keys = name.split('.');
var node = xmlDoc.documentElement; // 得到根節(jié)點(diǎn)
var rtn = new Array();
var n = 0;
for(var i=0; i<keys.length; i++) {
var childs = node.childNodes; // 得到子節(jié)點(diǎn)
var key = keys[i];
for(var k=0; k<childs.length; k++) {
var child = childs[k];
if(child.nodeName == key) { // 判斷子節(jié)點(diǎn)是否符合
if(i == keys.length-1) {
rtn[n] = child;
n++;
} else {
node = child;
break;
}
}
}
}
node_xml=rtn;
return rtn;
}
//獲得節(jié)點(diǎn)內(nèi)容
this.getNodeValue=function(name)
{
return this.getValue(xmlDoc,name);
}
//根據(jù)節(jié)點(diǎn)獲得節(jié)點(diǎn)下子節(jié)點(diǎn)內(nèi)容
this.getValue=function(node, name)
{
var keys = name.split('.');
for(var i=0; i<keys.length; i++)
{
var childs = node.childNodes; // 得到子節(jié)點(diǎn)
var key = keys[i];
for(var k=0; k<childs.length; k++)
{
var child = childs[k];
if(child.nodeName == key)
{ // 判斷子節(jié)點(diǎn)是否符合
if(child.childNodes.length == 1)
{
// 如果沒(méi)有字節(jié)點(diǎn),返回值
if(!window.ActiveXObject)
{
return childs[k].textContent;
}
else
{
return childs[k].text
}
}
else
{
// 還有子節(jié)點(diǎn),繼續(xù)分析
node = child;
break;
}
}
}
}
return "";
}
function GetXMLHTTP()
{
var xmlhttp;
if (window.ActiveXObject){
try{xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");}
catch (e){xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
}else if (window.XMLHttpRequest)
{xmlhttp=new XMLHttpRequest();}
return xmlhttp;
}
function getXML(url){
var xmlHttp=GetXMLHTTP();
if (xmlHttp!=null){
xmlHttp.open("GET",url,false);
xmlHttp.send(null);
}else{
alert("Your browser does not support XMLHTTP.11");
return false;
}
return xmlHttp;
}
}
調(diào)用方法DEMO
復(fù)制代碼 代碼如下:
var strXML="<?xml version='1.0' encoding='utf-8'?><ekuy><user><name><cnname>小豬</cnname></name><age>27</age></user><user><name><cnname>小霞</cnname></name><age>26</age></user><user><name><cnname>小章</cnname></name><age>25</age></user></ekuy>";
var XMLObj=new XMLObject();
XMLObj.LoadXMLForString(strXML)
//XMLObj.getXMLForURL("test.xml");
var list = XMLObj.getXMLArray( 'user');//獲得節(jié)點(diǎn)
document.write(XMLObj.getNodeValue('ekuy.user.name.cnname'));//直接獲得節(jié)點(diǎn)內(nèi)容
//循環(huán)節(jié)點(diǎn)獲得節(jié)點(diǎn)下子節(jié)點(diǎn)內(nèi)容
for(var i=0; i<list.length; i++) {
var obj = list[i];
document.write(XMLObj.getValue(obj, 'name.cnname'));
document.write(XMLObj.getValue(obj, 'age'));
document.write('<br\/>');
}
呵呵 寫(xiě)的不怎樣 大家見(jiàn)笑 非常簡(jiǎn)單的功能
相關(guān)文章
JavaScript中高級(jí)語(yǔ)法??表達(dá)式用法示例詳解
這篇文章主要為大家介紹了JavaScript中高級(jí)語(yǔ)法??表達(dá)式用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04JS在TextArea光標(biāo)位置插入文字并實(shí)現(xiàn)移動(dòng)光標(biāo)到文字末尾
JS在TextArea光標(biāo)位置插入文字+移動(dòng)光標(biāo)到文字末尾,F(xiàn)irefox,Chrome,Safari以及Opera都有selectionStart和selectionEnd屬性,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈2013-06-06基于Flowplayer打造一款免費(fèi)的WEB視頻播放器附源碼
Flowplayer是一款免費(fèi)的WEB視頻播放器。它支持播放flv、swf等流媒體和圖片文件,能夠非常流暢的播放視頻文件,支持自定義配置和擴(kuò)展。下面本篇文章給大家介紹基于Flowplayer打造一款免費(fèi)的WEB視頻播放器,需要的朋友可以參考下2015-09-09JavaScript基于自定義函數(shù)判斷變量類(lèi)型的實(shí)現(xiàn)方法
這篇文章主要介紹了JavaScript基于自定義函數(shù)判斷變量類(lèi)型的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了javascript判斷變量類(lèi)型的自定義函數(shù)定義與使用方法,并針對(duì)不同瀏覽器給出了相關(guān)的分析與說(shuō)明,需要的朋友可以參考下2016-11-11three.js實(shí)現(xiàn)圍繞某物體旋轉(zhuǎn)
本篇文章主要介紹了three.js實(shí)現(xiàn)圍繞某物體旋轉(zhuǎn)的示例代碼。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01JS短信驗(yàn)證碼倒計(jì)時(shí)功能的實(shí)現(xiàn)(沒(méi)有驗(yàn)證碼,只有倒計(jì)時(shí))
最近接了個(gè)項(xiàng)目,其中有這樣的需求:當(dāng)用戶(hù)想要獲取驗(yàn)證碼時(shí),就點(diǎn)擊免費(fèi)獲取驗(yàn)證碼 ,然后開(kāi)始倒計(jì)時(shí),倒計(jì)時(shí)期間按鈕文字為剩余時(shí)間x秒,且不可按狀態(tài),倒計(jì)時(shí)結(jié)束后,按鈕更改為點(diǎn)擊重新發(fā)送,下面給大家分享js短信驗(yàn)證碼倒計(jì)時(shí)實(shí)現(xiàn)代碼2016-10-10