javascript xml 操作

本文介绍了一种使用JavaScript操作XML的方法,包括加载、读取、添加、更新及删除XML节点的具体实现。通过实例展示了如何利用JavaScript DOM API来解析XML文档并对其进行各种操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

javascript xml 操作

<html>
<script>
/*
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对象进行判断
checkXMLDocObj     = function(xmlFile)
{
     var xmlDoc     = loadXML(xmlFile);
     if(xmlDoc==null)
     {
         alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
return null;
     }
    
     return xmlDoc;
}


// 然后开始获取需要的Login/Weapon/W的第一个节点的属性值
var xmlDoc     = checkXMLDocObj('/EBS/XML/Login.xml');
var v     = xmlDoc.getElementsByTagName('Login/Weapon/W')[0].childNodes.getAttribute('Text')

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);
         }
     }
}
*/

function loadXML(strXML)
{
var xmlstr = strXML;
var xmlDoc;
     if(window.ActiveXObject)
     {
         xmlDoc     = new ActiveXObject('Microsoft.XMLDOM');
         xmlDoc.async     = false;
    //      xmlDoc.load(xmlFile);
   xmlDoc.loadXML(xmlstr);
     }
     else if (document.implementation&&document.implementation.createDocument)
     {
         xmlDoc     = document.implementation.createDocument('', '', null);
    //     xmlDoc.load(xmlFile);
   xmlDoc.loadXML(xmlstr);
     }
     else
     {
         return null;
     }
   
     return xmlDoc;
}

function checkXMLDocObj(strXML)
{
     var xmlDoc = loadXML(strXML);
     if(xmlDoc==null)
     {
         alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
   return null;
     }
    
     return xmlDoc;
}

function ShowXML()
{
var xmlstr = document.getElementById("InputXML").value;
Show(xmlstr);
}

function Show(xmlstr)
{
var xmlDoc = checkXMLDocObj(xmlstr);

var nodeList = xmlDoc.selectNodes("//Login");
var showStr = "";
for (var pos=0; pos<nodeList.length; pos++)
{
   var node = nodeList[pos];
   for (var index=0; index<node.childNodes.length; index++)
   {
    var childNode = node.childNodes[index];
    for (var n=0; n<childNode.childNodes.length; n++)
    {
     showStr += childNode.childNodes[n].getAttribute("Text") + "," + childNode.childNodes[n].getAttribute("Value") + "/n";
    }
    showStr += "---------------------------------/n";
   }
}
document.getElementById("OutXML").value = showStr;
}

function AddNode()
{
var xmlstr = document.getElementById("InputXML").value;
var xmlDoc = checkXMLDocObj(xmlstr);

var root = xmlDoc.selectSingleNode("/Login");
var newNode = xmlDoc.createNode(1, "record", "");
root.appendChild(newNode);

var newElem = xmlDoc.createElement("C");
newNode.appendChild(newElem);
newElem.setAttribute("Text", "11111");
newElem.setAttribute("Value", "aaaaa");
alert(newNode.xml);

Show(root.xml);

// childNode.lastChild.text = "aaaaaa";
/*
var newElem = xmlDoc.createElement("col0");
newNode.appendChild(newElem);
newNode.lastChild.text = sCol;

var newElem = xmlDoc.createElement("row1");
newNode.appendChild(newElem);
newNode.lastChild.text = eRow;

var newElem = xmlDoc.createElement("col1");
newNode.appendChild(newElem);
newNode.lastChild.text = eCol;

    var    xmlDoc    =    new    ActiveXObject("Msxml2.DOMDocument.4.0");   
   var    root;   
   var    newNode;   
   xmlDoc.async    =    false;   
   xmlDoc.load("books.xml");   
   root    =    xmlDoc.documentElement;   
   alert(root.xml);   
   newNode    =    xmlDoc.createNode(1,    "VIDEOS",    "");   
   root.appendChild(newNode);   
   alert(root.xml);   
    
   删除节点:   
   var    xmlDoc    =    new    ActiveXObject("Msxml2.DOMDocument.4.0");   
   var    root;   
   var    currNode;   
   var    oldChild;   
   xmlDoc.async    =    false;   
   xmlDoc.load("books.xml");   
   root    =    xmlDoc.documentElement;   
   currNode    =    root.childNodes.item(1);   
   oldChild    =    currNode.removeChild(currNode.childNodes.item(1));   
   alert(oldChild.text);
*/
}

function UpdateNode()
{
var xmlstr = document.getElementById("InputXML").value;
var xmlDoc = checkXMLDocObj(xmlstr);

var node = xmlDoc.selectSingleNode("/Login/Character/C[@Value='0']");

node.setAttribute("Text", "11111");
node.setAttribute("Value", "aaaaa");

Show(xmlDoc.xml);
}

function DeleteNode()
{
var xmlstr = document.getElementById("InputXML").value;
var xmlDoc = checkXMLDocObj(xmlstr);

var node = xmlDoc.selectSingleNode("/Login/Character/C[@Value='0']");
node.parentNode.removeChild(node);
Show(xmlDoc.xml);
}
</script>
<textarea style="width: 500px; height: 500px" id="InputXML">
<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>
</textarea>
<textarea style="width: 500px; height: 500px" id="OutXML">
</textarea>
<br>
<input type="button" value="读取文档" onclick="ShowXML()">
<input type="button" value="增加节点" onclick="AddNode()">
<input type="button" value="修改节点" onclick="UpdateNode()">
<input type="button" value="删除节点" onclick="DeleteNode()">
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值