Posted on 2010-06-25 11:00
幻海蓝梦 阅读(2091)
评论(0) 编辑 收藏 所属分类:
JS
原文:http://hi.baidu.com/superfeng/blog/item/1575ff033a66f6743812bbb0.html
http://www.blogjava.net/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
length
;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.");
alert(objNewTextNode.xml);
|
getElementsByTagName
方法
作 用
|
传回指定名称的元素集合。 |
基本语法
|
objNodeList =
xmlDocument.getElementsByTagName(tagname);
|
说 明
|
tagname 是一个字符串,代表找到的元素卷标名称。使用tagname "*"传回文件中所有找到的元素。
|
范 例
|
objNodeList =
xmlDoc.getElementsByTagName("*");
alert(objNodeList.item(1).xml);
|
haschildnodes 方法
作 用
|
如果指定的节点有一个或更多子节点,传回值为true。 |
基本语法
|
boolValue = xmlDocumentNode.hasChildNodes() ;
|
说 明
|
如果此节点有子节点传回值为true,否则传回false 值。
|
范 例
|
boolValue =
xmlDoc.documentElement.hasChildNodes();
alert(boolValue);
|
insertBefore 方法
作 用
|
在指定的节点前插入一个子节点。 |
基本语法
|
objDocumentNode =
xmlDocumentNode.insertBefore(newChild,refChild);
|
说 明
|
newChild 是一个包含新子节点地址的对象,refChild
是参照节点的地址。新子节点被插到参照节点之前。如果refChild 参数没有包含在内,新的子节点会被插到子节点列表的末端。
|
范 例
|
objRefNode =
xmlDoc.documentElement;
alert(xmlDoc.xml);
objNewNode = xmlDoc.createComment("This is a comment");
xmlDoc.insertBefore(objNewNode, objRefNode);
alert(xmlDoc.xml);
|
load 方法
作 用
|
表示从指定位置加载的文件。 |
基本语法
|
boolValue = xmlDocument.load(url);
|
说 明
|
url 包含要被加载档案的URL
的字符串。假如文件加载成功,传回值即为true。若加载失败,传回值为false。
|
范 例
|
boolValue =
xmlDoc.load("LstA_1.xml");
alert(boolValue);
|
loadXML 方法
作 用
|
加载一个XML 文件或字符串的片断。 |
基本语法
|
boolValue = xmlDocument.loadXML(xmlString);
|
说 明
|
xmlString 是包含XML 文字码的字符串。
|
范 例
|
xmlString =
"Hello!";
boolValue = xmlDoc.loadXML(xmlString);
alert(boolValue);
|
nodeFromID 方法
作 用
|
传回节点ID 符合指定值的节点。 |
基本语法
|
xmlDocumentNode = xmlDocument.nodeFromID(idString);
|
说 明
|
idString 是一个包含ID 值的字符串。符合的节点必定是ID
型态。若符合,将传回一个对象;若操作失败,则传回null。
|
范 例
|
objDocumentNode =
xmlDoc.nodeFromID("TO");
alert(objDocumentNode);
|
parsed 方法
作 用
|
会验证该指定的节点(node)及其衍生的子节点(descendants)是否已被解析过。 |
基本语法
|
boolValue = xmlDocumentNode.parsed();
|
说 明
|
如果全部的节点都已经被解析过了,则传回值为ture;如果有任何一个节点尚未被解析,传回值则为false。
|
范 例
|
currNode =
xmlDoc.documentElement.childNodes.item(0);
boolValue =
currNode.parsed();
alert(boolValue);
|
removeChild 方法
作 用
|
会将指定的节点从节点清单中移除。 |
基本语法
|
objDocumentNode =
xmlDocumentNode.removeChild(oldChild);
|
说 明
|
oldChild 为一个包含要被移除的节点对象。
|
范 例
|
objRemoveNode =
xmlDoc.documentElement.childNodes.item(3);
alert(xmlDoc.xml);
xmlDoc.documentElement.removeChild(objRemoveNode);
alert(xmlDoc.xml);
|
replaceChild 方法
作 用
|
置换指定的旧子节点为提供的新子节点。 |
基本语法
|
objDocumentNode =
xmlDocumentNode.replaceChild(newChild,oldChild);
|
说 明
|
newChild
为包含新子节点的对象。如果此参数为null,则此旧子节点会被移除而不会被取代。oldChild 为包含旧子节点的对象。
|
范 例
|
objOldNode =
xmlDoc.documentElement.childNodes.item(3);
objNewNode = xmlDoc.createComment("I've replaced the BCC element.");
alert(xmlDoc.xml);
xmlDoc.documentElement.replaceChild(objNewNode,objOldNode);
alert(xmlDoc.xml);
|
selectNodes 方法
作 用
|
传回所有符合提供样式(pattern)的节点。 |
基本语法
|
objDocumentNodeList =
xmlDocumentNode.selectNodes(patternString);
|
说 明
|
patternString 为一包含XSL
样式的字符串。此方法会传回节点清单对象,包含符合样式的节点。如果没有符合的节点,则传回空的清单列表。
|
范 例
|
objNodeList=xmlDoc.selectNodes("/");
alert(objNodeList.item(0).xml);
|
selectSingleNode
传回第一个符合样式的节点
作 用
|
传回第一个符合样式的节点。 |
基本语法
|
objDocumentNode =
xmlDocumentNode.selectSingleNode(patternString);
|
说 明
|
patternString 为一包含XSL
样式的字符串。此方法会传回第一个符合的节点对象,如果没有符合的节点,则传回null。
|
范 例
|
objNode =
xmlDoc.selectSingleNode("EMAIL/BCC");
alert(objNode.xml);
|
transformNode 方法
作 用
|
使用提供的样式表来处理该节点及其子节点。 |
基本语法
|
strTransformedDocument =
xmlDocumentNode.transformNode(stylesheet);
|
说 明
|
stylesheet 为一XML 文件或是片断包含负责节点转换工作的XSL
元素。此方法会传回一包含转换结果的字符串。
|
范 例
|
var style = new
ActiveXObject("Microsoft.XMLDOM");
style.load("LstA_49.xsl");
strTransform = xmlDoc.transformNode(style.documentElement);
alert(strTransform);
|