( ajax javascript 处理xml)
没搞定,以为可以用这个js自如的处理xml,结果处处报错
var oXml = getXml("sample_data.xml");
var aNodes = selectNodes(oXml,"/sample-data-root/the-data",oXml.documentElement);
这个js里根本没有如下这个方法
换了个方法来处理读入的xml文件
文件:formdatas.xml
<?xml version="1.0" encoding="gb2312"?>
<formdatas>
<data>
<address>地址</address> #text
<productaddress>生产地址</productaddress> #text
<diploma>大专</diploma> #select
<type>二类|四类|三类</type> #checkbox
<sex>女</sex> #radio
<date>2005年12月31日</date> #text
<memo>备注</memo> #textarea
</data>
</formdatas>
js片段:
function updateform(xmlname,obj){
var url = ""+xmlname;
if(document.implementation&&document.implementation.createDocument) {
var xmldoc = document.implementation.createDocument("", "", null);
xmldoc.onload = handler(xmldoc, obj);
xmldoc.load(url);
}
else if(window.ActiveXObject) {
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.onreadystatechange = function() {
if(xmldoc.readyState == 4) handler(xmldoc, obj);
}
xmldoc.load(url);
}
}
function handler(xmldoc, obj) {
var formdatas = xmldoc.getElementsByTagName("data")[0];
for (var i=0;i<obj.length ;i++ ){
e=obj[i];
if (e.name != '') //表单中的e.name对应xml里的tagName,利用对应关系,将值写入表单中
{
if ( e.type == 'text' || e.type == 'textarea'){
e.value = formdatas.getElementsByTagName(e.name)[0].firstChild.data;
}
if( e.type == 'checkbox' || e.type == 'radio'){
var temp = formdatas.getElementsByTagName(e.name)[0].firstChild.data.split("|");
for(var k=0; k<temp.length; k++){
//alert( temp[k] );
if( e.value == temp[k] ) e.checked = true;
}
}
if( e.type == 'select-one' ){
var selvalue = formdatas.getElementsByTagName(e.name)[0].firstChild.data;
document.getElementById(e.name+"div").innerHTML="";
document.getElementById(e.name+"div").innerHTML=selvalue;
}
}
}
}
效果:点击"读取xml文件"按钮,将相应的值解析到文本框中,如下所示: