( 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文件"按鈕,將相應的值解析到文本框中,如下所示: