< html xmlns ="http://www.w3.org/1999/xhtml" >
< head >
< title > js操作xml </ title >
< script type ="text/javascript" >
var iIndex = - 1 ;
var objectDoc = new ActiveXObject( " MSXML2.DOMDocument.3.0 " );
objectDoc.load( " root.xml " );
var objectItem = objectDoc.selectNodes( " /Root/Item " );
function getNode(objectDoc, strPath);
{
var returnValue = "" ;
var strValue = objectDoc.selectNodes(strPath);
if (strValue)
returnValue = strValue.Text;
return returnValue;
}
function getDataNext()
{
iIndex ++ ;
if (iIndex > objectItem.length - 1 )
iIndex = 0 ;
document.forms[ 0 ].ProductTag.value = getNode(objectDoc, " /root/item[ " + iIndex + " ]/ProductTag " );
document.forms[ 0 ].Price.value = getNode(objectDoc, " /root/item[ " + iIndex + " ]/Price " );
document.forms[ 0 ].Quantity.value = getNode(objectDoc, " /root/item[ " + iIndex + " ]/Quantity " );
document.forms[ 0 ].Total.value = getNode(objectDoc, " /root/item[ " + iIndex + " ]/Total " );
}
function getDataPrev()
{
iIndex -- ;
if (iIndex > objectItem.length - 1 )
iIndex = 0 ;
document.forms[ 0 ].ProductTag.value = getNode(objectDoc, " /root/item[ " + iIndex + " ]/ProductTag " );
document.forms[ 0 ].Price.value = getNode(objectDoc, " /root/item[ " + iIndex + " ]/Price " );
document.forms[ 0 ].Quantity.value = getNode(objectDoc, " /root/item[ " + iIndex + " ]/Quantity " );
document.forms[ 0 ].Total.value = getNode(objectDoc, " /root/item[ " + iIndex + " ]/Total " );
}
function init()
{
document.all.XMLTitle.innerText = getNode(objectDoc, " /root/Cigarette " );
document.all.XMLDate.innerText = getNode(objectDoc, " /root/Date " );
}
</ script >
</ head >
< body onload ="init();GetDataNext()" >
< form >
< div id ="XMLTitle" ></ div >
< br />
< table border ="0" >
< tr >< td > 产品名称 </ td >< td >< input type ="text" name ="ProductTag" /></ td ></ tr >
< tr >< td > 产品价格 </ td >< td >< input type ="text" name ="Price" /></ td ></ tr >
< tr >< td > 产品数量 </ td >< td >< input type ="text" name ="Quantity" /></ td ></ tr >
< tr >< td > 金额合计 </ td >< td >< input type ="text" name ="Total" /></ td ></ tr >
</ table >
< br />
< div id ="XMLDate" ></ div >
< br />
< input type ="button" value ="<<" onclick ="getDataPrev();" />
< input type ="button" value =">>" onclick ="getDataNext();" />
</ form >
</ body >
</ html >
节点对象属性
childNodes—返回节点到子节点的节点列表
firstChild—返回节点的首个子节点。
lastChild—返回节点的最后一个子节点。
nextSibling—返回节点之后紧跟的同级节点。
nodeName—返回节点的名字,根据其类型。
nodeType—返回节点的类型。
nodeValue—设置或返回节点的值,根据其类型。
ownerDocument—返回节点的根元素(document对象)。
parentNode—返回节点的父节点。
previousSibling—返回节点之前紧跟的同级节点。
text—返回节点及其后代的文本(IE独有)。
xml—返回节点及其后代的XML(IE独有)。
节点对象的方法
appendChild()—向节点的子节点列表的结尾添加新的子节点。
cloneNode()—复制节点。
hasChildNodes()—判断当前节点是否拥有子节点。
insertBefore()—在指定的子节点前插入新的子节点。
normalize()—合并相邻的Text节点并删除空的Text节点。
removeChild()—删除(并返回)当前节点的指定子节点。
replaceChild()—用新节点替换一个子节点。
IE6独有方法
selectNodes()—用一个XPath表达式查询选择节点。
selectSingleNode()—查找和XPath查询匹配的一个节点。
transformNode()—使用XSLT把一个节点转换为一个字符串。transformNodeToObject()—使用XSLT把一个节点转换成为一个文档
***********/
//***********js操作XML*************
//* author:iflash50 *
//* Email:iflash50@163.com *
//*********************************
//针对两种浏览器,分别获取xmlDocument对象
function loadXML(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.async = false;
xmlDoc.load(xmlFile);
} else {
alert('你的浏览器不支持xml数据读取');
}
return xmlDoc;
}
var xmlDoc = loadXML("file.xml");
var members = xmlDoc.getElementsByTagName("files");
var maxRes = members.length;
function getXML() {
for (var i = 0; i < maxRes; i++) {
var oName = members[i].getElementsByTagName("name");
document.getElementById("ShowXML").innerHTML += oName[0].firstChild.nodeValue+"__"; //用oName[0].text,不兼容ff,替换成oName[0].firstChild.nodeValue
}
}
<body οnlοad="getXML()">
<div id="ShowXML">
</div>
</body>
<?xml version="1.0" encoding="GB2312"?>
<rautinee>
<files id='1'>
<name>AAF1</name>
<size>1000</size>
<update>2010-03-09 10:55</update>
</files>
<files id='2'>
<name>AD</name>
<size>20</size>
<update>11111-03-09 10:55</update>
</files>
<files id='3'>
<name>12312</name>
<size>10</size>
<update>3212-03-09 10:55</update>
</files>
</rautinee>