昨天和今天的学习成果
【说明】
取节点名称用nodeName(这个是我搜索到一篇讲delphi取xml数据的方法受到的启发。在delphi里,这里对应的是get_nodeName,呵呵。没办法,实在搜索不到有关DOM的详细属性,方法的文档。^_^)
取节点值用text
如果出现undefined提示,那么很显然,表示对象无此内置属性或者方法。
【本示例函数特别说明】
mainform是我的表单的名称
其实关键就两句
var note=xmlDoc.getElementsByTagName("note");//这里的note是我的数据根
for(var i=0;i<note.item(0).childNodes.length;i++)
{
var formMember=note.item(0).childNodes(i).nodeName;//这里取到了节点的名称
}
完整的示例如下
function xmlhttp_get(formdata,url)
{
var nl=document.fm2.custom_id.length;
//alert(typeof(nl));
for (k=0;k<nl ;k++ )
{
if (document.fm2.custom_id[k].checked)
{
//只有选中才取数据;
//---------------------------------主程式开始------------------------
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("POST",url,false);
xmlhttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
xmlhttp.send(formdata);
var strXML;
strXML="";
strXML=xmlhttp.ResponseText;
//alert(strXML);
maindata.value=strXML;
var xmlDoc=new ActiveXObject("MSXML.DOMDocument");
xmlDoc.async=false;
if(xmlDoc.loadXML(strXML))
{
//var nod = xmlDoc.selectNodes("//note");
var note=xmlDoc.getElementsByTagName("note");
for(var i=0;i<note.item(0).childNodes.length;i++)
{
//alert(nod[i].getAttributes("num"));
var formMember=note.item(0).childNodes(i).nodeName;
for(p=0;p<document.mainform.length;p++)
{
if (document.mainform.elements(p).name==formMember)
{
document.mainform.elements(p).value=note.item(0).childNodes(i).text;
}
}
}
}
info.innerHTML="Execute End";
//set xmlDoc=nothing;
//xmlhttp.close;
//set xmlhttp=nothing;
//----------------------------------------主程式结束---------------------
//取数据后,从循环中跳出;
break;
}//if 闭合
}//for 闭合
}
希望能对大家有所帮助