自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JavaScript解析XML的方法總結(jié)

開發(fā) 前端
本文作者根據(jù)自己的實際工作經(jīng)驗,對JavaScript解析XML的方法進行了總結(jié),希望可以給您帶來幫助。

最近一個項目中要用到樹形列表,本來是用mztree的,但數(shù)據(jù)用了xml,本來xml就是樹形目錄,就打算用JavaScript直接解析xml文件了,網(wǎng)上找到一些JavaScript操作xml的方法,在此做一個總結(jié)。

我的xml文件Login.xml如下:

<?xml version="1.0" encoding="utf-8" ?>

<Login>

<Character>

<C Text="熱血" Value="0"></C>

<C Text="弱氣" Value="1"></C>

<C Text="激情" Value="2"></C>

<C Text="冷靜" Value="3"></C>

<C Text="冷酷" Value="4"></C>

</Character>

<Weapon>

<W Text="光束劍" Value="0"></W>

<W Text="光束配刀" Value="1"></W>

</Weapon>

<EconomyProperty>

<P Text="平均型" Value="0"></P>

<P Text="重視攻擊" Value="1"></P>

<P Text="重視敏捷" Value="2"></P>

<P Text="重視防御" Value="3"></P>

<P Text="重視命中" Value="4"></P>

</EconomyProperty>

</Login>

現(xiàn)在我需要對這個xml文件的內(nèi)容進行操作。

首先,我們需要加載這個xml文件,JavaScript中加載xml文件,是通過XMLDOM來進行的:

// 加載xml文檔

loadXML = function(xmlFile)

{

var xmlDoc;

if(window.ActiveXObject)

{

xmlDoc = new ActiveXObject('Microsoft.XMLDOM');

xmlDoc.async = false;

xmlDoc.load(xmlFile);

}

else if (document.implementation&&document.implementation.createDocument)

{

xmlDoc = document.implementation.createDocument('', '', null);

xmlDoc.load(xmlFile);

}

else

{

return null;

}

return xmlDoc;

}

xml文件對象出來了, 接下去我就要對這個文檔進行操作了。

比如說,我們現(xiàn)在需要得到節(jié)點Login/Weapon/W的第一個節(jié)點的屬性,那么我們可以如下進行:

// 首先對xml對象進行判斷

checkXMLDocObj = function(xmlFile)

{

var xmlDoc = loadXML(xmlFile);

if(xmlDoc==null)

{

alert('您的瀏覽器不支持xml文件讀取,于是本頁面禁止您的操作,推薦使用IE5.0以上可以解決此問題!');

window.location.href='/Index.aspx';

}

return xmlDoc;

}

// 然后開始獲取需要的Login/Weapon/W的第一個節(jié)點的屬性值

var xmlDoc = checkXMLDocObj('/EBS/XML/Login.xml');

var v = xmlDoc.getElementsByTagName('Login/Weapon/W')[0].childNodes.getAttribute('Text')

而我在我的程序中的寫法是這樣子的,當(dāng)然我在程序中的寫法是已經(jīng)應(yīng)用到實際中的了.一并給出來,以供查看。

initializeSelect = function(oid, xPath)

{

var xmlDoc = checkXMLDocObj('/EBS/XML/Login.xml');

var n;

var l;

var e = $(oid);

if(e!=null)

{

n = xmlDoc.getElementsByTagName(xPath)[0].childNodes;

l = n.length;

for(var i=0; i<l; i++)

{

var option = document.createElement('option');

option.value = n[i].getAttribute('Value');

option.innerHTML = n[i].getAttribute('Text');

e.appendChild(option);

}

}

}

上面的訪問代碼中,我們是通過xmlDoc.getElementsByTagName(xPath)來進行的。

還可以通過xmlDoc.documentElement.childNodes(1)..childNodes(0).getAttribute('Text')進行訪問。

一些常用方法:

◆ xmlDoc.documentElement.childNodes(0).nodeName,可以得到這個節(jié)點的名稱;

◆ xmlDoc.documentElement.childNodes(0).nodeValue,可以得到這個節(jié)點的值. 這個值是來自于這樣子的xml格式:<a>b</b>, 于是可以得到b這個值;

◆ xmlDoc.documentElement.childNodes(0).hasChild,可以判斷是否有子節(jié)點。

根據(jù)我的經(jīng)驗,最好是使用getElementsByTagName(xPath)的方法對節(jié)點進行訪問,因為這樣子可以直接通過xPath來定位節(jié)點,這樣子會有更好的性能。

【編輯推薦】

  1. 如何使用C#與XML創(chuàng)建動態(tài)分層菜單
  2. 通過Java編程處理XML服務(wù)定義
  3. 在ASP.NET中使用Treeview控件和XML
責(zé)任編輯:楊鵬飛 來源: 網(wǎng)易博客
相關(guān)推薦

2020-04-07 00:10:16

javascrip語言異步

2010-07-26 15:06:29

Perl解析XML文件

2013-06-08 17:09:35

Android開發(fā)移動開發(fā)XML解析

2010-06-12 16:30:51

UML設(shè)計

2009-09-09 14:04:18

C# XML解析XML解析方法

2010-10-08 12:46:27

Javascriptreplace()

2011-06-22 15:21:08

XML

2009-09-09 14:20:18

C# XML解析XML解析方法

2009-03-31 13:12:30

解析XMLJava

2011-04-08 09:16:12

JavaScript

2020-12-21 16:35:51

JavaScript網(wǎng)頁截屏代碼

2012-08-16 15:56:33

XML

2010-10-08 14:27:25

JavascriptSplit

2022-12-01 08:30:10

JavaScript構(gòu)造函數(shù)

2009-09-14 14:47:57

XML節(jié)點

2011-02-22 14:10:25

PHPXML

2013-06-08 11:04:18

Android開發(fā)Pull解析XMLAndroid XML

2012-05-23 13:17:43

JavaJdomXML

2009-09-09 14:40:15

C# XML解析

2022-04-11 08:25:37

XMLSQL語句Mybatis
點贊
收藏

51CTO技術(shù)棧公眾號