JavaScript克隆XML节点问题

时间:2011-07-18 07:01:47

标签: javascript xml

这部分代码首先获取数据并显示XML文件中的数据。之后,下面有一个名为submit的按钮。当我按下提交时,它调用函数add(),它将复制XML文件中的第一个节点:

<html>
<body>
<link rel="stylesheet" type="text/css" href="test.css" />
<table>
</tr class="top">
<td>ID</td>
<td>Orgin</td>
<td>Type</td>
<td>Color</td>
</tr>

<script type="text/javascript">
xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","test.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var x=xmlDoc.getElementsByTagName("product");
for (i=0;i<x.length;i++)
  {
  document.write("<tr class=a><td>");
  document.write(x[i].getElementsByTagName("orgin")[0].getAttribute("id"));
  document.write("</td><td>");
  document.write(x[i].getElementsByTagName("orgin")[0].childNodes[0].nodeValue);
  document.write("</td><td>");
  document.write(x[i].getElementsByTagName("type")[0].childNodes[0].nodeValue);
  document.write("</td><td>");
  document.write(x[i].getElementsByTagName("color")[0].childNodes[0].nodeValue);
  document.write("</td></tr>");
  }
document.write("</table>");

function add()
{var id=document.getElementById('idProduct').value;
var time=document.getElementById('Time').value;
var org=document.getElementById('orgin').value;
var color=document.getElementById('color').value;
var type=document.getElementById('type').value;

xmlDoc=loadXMLDoc("test.xml"); //Problem happen here, the code doesn't functioning
oldNode=xmlDoc.getElementsByTagName('product')[1];
newNode=oldNode.cloneNode(true);
xml.Doc.documentElement.appendChild(newNode); 
}

</script>
<br>
Inputs:
<br>
Time: <input type="text" id="time"><br>
ID: <input type="text" id="idProduct"><br>
Orgin: <input type="text" name="orgin"><br>
Type: <input type="text" name="type"><br>
Color: <input type="text" name="color"><br>
<input type="button" value="submit" onclick="add()"></input>


</body>
</html>

这是XML文件:

<?xml version="1.0" encoding="Big5" ?>
<set>
  <product time="5">
    <orgin id="1">sony</orgin>
    <type>comp</type>
    <color>red</color>
  </product>
  <product time="6">
    <orgin id="2">apple</orgin>
    <type>others</type>
    <color>blue</color>
  </product>
</set>

1 个答案:

答案 0 :(得分:0)

以下是W3Schools loadxmldoc.js文件:

function loadXMLDoc(dname) 
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);
xhttp.send();
return xhttp.responseXML;
}

将其添加到您的脚本块中,它可能会开始工作(或者让您更进一步)。