现在的位置: 首页 > 综合 > 正文

JS 操作XML

2013年10月30日 ⁄ 综合 ⁄ 共 4886字 ⁄ 字号 评论关闭

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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 onload="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>

抱歉!评论已关闭.