使用 javascript 移动 xmlDom 节点

本文介绍了一种使用JavaScript操作XMLDom节点的方法,通过实例演示了如何从一个XML文档中移动节点到另一个文档,并提供了完整的代码实现。

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

<html>
<header><title>使用 javascript 移动 xmlDom 节点.</title></header>
<body>
<textarea id='log0' rows='10' cols='100'>
<?xml version="1.0"?>
<web-app>
<welcome-file>3333index.html</welcome-file>
</web-app></textarea>
<textarea id='log1' rows='10' cols='100'>
<?xml version="1.0"?>
<web-app>
<welcome-file>1111index.html</welcome-file>
<welcome-file-list>
<welcome-file>2222index.html</welcome-file>
</welcome-file-list>
</web-app></textarea>
<br><button onclick="parse1()"> parse1 </button>
<button onclick="parse2()"> parse2 </button>
<br>
<textarea id='log2' rows='30' cols='100'></textarea>

<SCRIPT LANGUAGE=javascript>
function parse1(){

var xmlDoc0 = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc0.loadXML( document.getElementById('log0').value );

var xmlDoc1 = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc1.loadXML( document.getElementById('log1').value );

if( xmlDoc0.readyState==4 && xmlDoc1.readyState==4){
rootNode0 = xmlDoc0.documentElement;
xml = '';
xml = scanXml(rootNode0, xml, 0);
document.getElementById('log2').value +=
"\n\n-------------------------------------xmlDoc0";
document.getElementById('log2').value += xml;

rootNode1 = xmlDoc1.documentElement;
moveElement(rootNode0, rootNode1);
xml = '';
xml = scanXml(rootNode1, xml, 0);
document.getElementById('log2').value +=
"\n\n-------------------------------------xmlDoc1";
document.getElementById('log2').value += xml;

xml = '';
xml = scanXml(rootNode0, xml, 0);
document.getElementById('log2').value +=
"\n\n-------------------------------------xmlDoc0";
document.getElementById('log2').value += xml;
}
}

function moveElement( sourceNode, descNode ){
while( sourceNode.hasChildNodes() ){
[b]//将会从 sourceNode 移除节点.[/b]
descNode.appendChild( sourceNode.firstChild );
}
}

function nSpace( n ){
var space ="";
for(var i=0; i< n; i++){
space += "--";
}
return space;
}

function scanXml(xmlNode, xml, level){
var currXml = '';
var currLevel = level + 1;
//alert( xmlNode.nodeType + ":" + xmlNode.nodeName );
//nodeType 此属性只读且传回一个数值。有效的数值符合以下的型别:
switch( xmlNode.nodeType ){
case 1: //-ELEMENT
currXml += "\n" + nSpace( level ) + "<" + xmlNode.nodeName + ">";
if(xmlNode.hasChildNodes()){
var nodeList = xmlNode.childNodes;
for(var i=0;i<nodeList.length;i++){
currXml = scanXml(nodeList[i], currXml, currLevel);
}
}
currXml += "\n" + nSpace( level ) + "</" + xmlNode.nodeName + ">";
break;
case 2: break;//-ATTRIBUTE
case 3: //-TEXT
currXml = "\n" + nSpace( level ) + xmlNode.nodeValue;
break;
case 4: break;//-CDATA
case 5: break;//-ENTITY REFERENCE
case 6: break;//-ENTITY
case 7: break;//-PI (processing instruction)
case 8: break;//-COMMENT
case 9: break;//-DOCUMENT
case 10: break;//-DOCUMENT TYPE
case 11: break;//-DOCUMENT FRAGMENT
case 12: break;//-NOTATION
default:
}
return xml + currXml;
}
</SCRIPT>
</body>
</html>



参照: http://www.w3sky.com/2/2550.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值