原文:http://hi.baidu.com/superfeng/blog/item/1575ff033a66f6743812bbb0.html
http://www.aygfsteel.com/zhyiwww/archive/2007/05/29/120741.html
首先,通過 ajax 向 url 提交請求,來取得遠程 xml 數據。
var
xmlDoc = response.responseXML;
此時,你得到
了
xml
的文檔對象。
那么你如何解
析文檔呢?
也就是,如何
取得一個結點對象呢?
var
allPoi = xmlDoc.selectNodes(
"/schemes/scheme/line/stops/stop/points/point"
);
通過
selectNodes
方法,我們可
以得到所有的符合這個路徑的所有子節點。
如果
allPoi得到的是葉子節點的話,那么我們就可以通過allPoi[0].text來取得節點的值.
下面,我們就
可以遍歷其對象了:
???
for
(
var
i=0;i
??????
alert
(pois[i].selectSingleNode(
"iLongitude"
).text);??????
??? }
selectSingleNode
可以取得其中
一個子節點,通過
text
屬性來取得其
對應的字符串值。
取得文檔后,
我們解析
xml
的時候也可以
通過其他的方法,比如:
var stopsGroup =
xmlDoc.getElementsByTagName("stops")
這種辦法也一
樣可以取到你想要取得所有某節點對象。
createTextNode 方法
作??? 用 |
建立一個新的text 節點,并包含指定的數據。 |
基本語法 |
xmlDocument.createTextNode(data); |
說??? 明 |
data 是一個代表新text 節點的字符串。一個新的text 節點被建立,但是沒有加到文件樹中。若要將節點加到文件樹中,必須使用插入方法,例如:insertBefore,replaceChild或 appendChild。 |
范??? 例 |
objNewTextNode =
xmlDoc.createTextNode("This is a text node."); |
getElementsByTagName 方法
作??? 用 |
傳回指定名稱的元素集合。 |
基本語法 |
objNodeList = xmlDocument.getElementsByTagName(tagname); |
說??? 明 |
tagname 是一個字符串,代表找到的元素卷標名稱。使用tagname "*"傳回文件中所有找到的元素。 |
范??? 例 |
objNodeList =
xmlDoc.getElementsByTagName("*"); |
haschildnodes 方法
作??? 用 |
如果指定的節點有一個或更多子節點,傳回值為true。 |
基本語法 |
boolValue = xmlDocumentNode.hasChildNodes() ; |
說??? 明 |
如果此節點有子節點傳回值為true,否則傳回false 值。 |
范??? 例 |
boolValue =
xmlDoc.documentElement.hasChildNodes(); |
insertBefore 方法
作??? 用 |
在指定的節點前插入一個子節點。 |
基本語法 |
objDocumentNode = xmlDocumentNode.insertBefore(newChild,refChild); |
說??? 明 |
newChild 是一個包含新子節點地址的對象,refChild 是參照節點的地址。新子節點被插到參照節點之前。如果refChild 參數沒有包含在內,新的子節點會被插到子節點列表的末端。 |
范??? 例 |
objRefNode =
xmlDoc.documentElement; |
load 方法
作??? 用 |
表示從指定位置加載的文件。 |
基本語法 |
boolValue = xmlDocument.load(url); |
說??? 明 |
url 包含要被加載檔案的URL 的字符串。假如文件加載成功,傳回值即為true。若加載失敗,傳回值為false。 |
范??? 例 |
boolValue =
xmlDoc.load("LstA_1.xml"); |
loadXML 方法
作??? 用 |
加載一個XML 文件或字符串的片斷。 |
基本語法 |
boolValue = xmlDocument.loadXML(xmlString); |
說??? 明 |
xmlString 是包含XML 文字碼的字符串。 |
范??? 例 |
xmlString =
" |
nodeFromID 方法
作??? 用 |
傳回節點ID 符合指定值的節點。 |
基本語法 |
xmlDocumentNode = xmlDocument.nodeFromID(idString); |
說??? 明 |
idString 是一個包含ID 值的字符串。符合的節點必定是ID 型態。若符合,將傳回一個對象;若操作失敗,則傳回null。 |
范??? 例 |
objDocumentNode =
xmlDoc.nodeFromID("TO"); |
parsed 方法
作??? 用 |
會驗證該指定的節點(node)及其衍生的子節點(descendants)是否已被解析過。 |
基本語法 |
boolValue = xmlDocumentNode.parsed(); |
說??? 明 |
如果全部的節點都已經被解析過了,則傳回值為ture;如果有任何一個節點尚未被解析,傳回值則為false。 |
范??? 例 |
currNode =
xmlDoc.documentElement.childNodes.item(0); |
removeChild 方法
作??? 用 |
會將指定的節點從節點清單中移除。 |
基本語法 |
objDocumentNode = xmlDocumentNode.removeChild(oldChild); |
說??? 明 |
oldChild 為一個包含要被移除的節點對象。 |
范??? 例 |
objRemoveNode =
xmlDoc.documentElement.childNodes.item(3); |
replaceChild 方法
作??? 用 |
置換指定的舊子節點為提供的新子節點。 |
基本語法 |
objDocumentNode = xmlDocumentNode.replaceChild(newChild,oldChild); |
說??? 明 |
newChild 為包含新子節點的對象。如果此參數為null,則此舊子節點會被移除而不會被取代。oldChild 為包含舊子節點的對象。 |
范??? 例 |
objOldNode =
xmlDoc.documentElement.childNodes.item(3); |
selectNodes 方法
作??? 用 |
傳回所有符合提供樣式(pattern)的節點。 |
基本語法 |
objDocumentNodeList = xmlDocumentNode.selectNodes(patternString); |
說??? 明 |
patternString 為一包含XSL 樣式的字符串。此方法會傳回節點清單對象,包含符合樣式的節點。如果沒有符合的節點,則傳回空的清單列表。 |
范??? 例 |
objNodeList=xmlDoc.selectNodes("/"); |
selectSingleNode 傳回第一個符合樣式的節點
作??? 用 |
傳回第一個符合樣式的節點。 |
基本語法 |
objDocumentNode = xmlDocumentNode.selectSingleNode(patternString); |
說??? 明 |
patternString 為一包含XSL 樣式的字符串。此方法會傳回第一個符合的節點對象,如果沒有符合的節點,則傳回null。 |
范??? 例 |
objNode =
xmlDoc.selectSingleNode("EMAIL/BCC"); |
transformNode 方法
作??? 用 |
使用提供的樣式表來處理該節點及其子節點。 |
基本語法 |
strTransformedDocument = xmlDocumentNode.transformNode(stylesheet); |
說??? 明 |
stylesheet 為一XML 文件或是片斷包含負責節點轉換工作的XSL 元素。此方法會傳回一包含轉換結果的字符串。 |
范??? 例 |
var style = new
ActiveXObject("Microsoft.XMLDOM"); |