[总结]客户端JavaScript读取Xml文档的例子!

<SCRIPT language=javascript>

var xmlDoc_out = new ActiveXObject("Microsoft.XMLDOM");

xmlDoc_out.async="false";

xmlDoc_out.load("<A HREF="Rss.aspx">Rss.aspx</A>");

maxNum_out = xmlDoc_out.getElementsByTagName("item").length;

for(i=1;i<maxNum_out;i++) {

if (i>10) exit(0);

strLink =xmlDoc_out.getElementsByTagName("link").item(i).text;

strTitle=xmlDoc_out.getElementsByTagName("title").item(i).text;

document.write("<a href='" + strLink + "' target=_blank>" + strTitle + "</a><br>");

}

</SCRIPT>

以下是我做的,利用javascript 读取xml的例子,其实同服务器端的一样,也是用DOM方法来进行对xml操作的!

function LoadOneXml(filename) {
    var xmlDoc_out = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc_out.async="false";
    xmlDoc_out.load("http://localhost/obs/Usercontrol/"+filename);

//注意这块只能写localhost这样的绝对路径
    if (filename!="1.xml" && filename!="2.xml")
    {
        //getSecField(xmlDoc_out);
        //getItemField(xmlDoc_out);
        //getSubItemField(xmlDoc_out);
  //maxNum_out = xmlDoc_out.getElementsByTagName("Item").length;
  var nodelist=xmlDoc_out.selectNodes("/ICD10Category/SubCategory/Section/Item");
  var maxNum_out=nodelist.length;
  getParentItem(filename);
  var len=IN.length;
  var str="";
  for(var i=0;i<maxNum_out;i++) {
  IN[i+len]=nodelist[i].getAttribute("ItemName");
  INum[i+len]=nodelist[i].getAttribute("ItemNumber");
  IDes[i+len]=nodelist[i].getAttribute("ItemDescription");
  
  IFN[i+len]=nodelist[i].childNodes[0].getAttribute("ItemFieldName");
  //str=str+" "+nodelist[i].childNodes[0].getAttribute("ItemFieldName");
  //if(i==0)
  getSubItem(nodelist[i]);

  }//for 
   // alert(str);
 }
 else
 {
   getField(xmlDoc_out);
 
 }
 
}



用 nodelist[i].text来读取 <Node></Node>之间的内容


项目中的例子

//------------------------------Display tip--------------------------------------------//
//=====First Layer====//
var SN =new Array();//SecName
var SNum =new Array();//SecNumber
var SDes =new Array();//SecDescription
var SFN =new Array();//SecFieldName
//=====Second Layer====//
var IN = new Array();//ItemName
var IFN = new Array();//ItemFieldName
var INum = new Array();//ItemNumber
var IDes = new Array();//ItemDescription
//=====Third Layer====//
var SIN = new Array();//SubItemName
var SIFN = new Array();//SubItemFieldName
var SINum = new Array();//SubItemNumber
var SIDes = new Array();//SubItemDescription
var keyctrl=0; //Whether Keydown Ctrl or not//
function LoadOneXml(filename) {
var xmlDoc_out = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc_out.async="false";
xmlDoc_out.load("http://localhost/obs/Usercontrol/"+filename);
if (filename!="ICD10_GynProcedures.xml" && filename!="ICD10_ObsProcedures.xml")
{
//maxNum_out = xmlDoc_out.getElementsByTagName("Item").length;
var nodelist=xmlDoc_out.selectNodes("/ICD10Category/SubCategory/Section/Item");
var maxNum_out=nodelist.length;
getParentItem(filename);
var len=IN.length;
var str="";
for(var i=0;i<maxNum_out;i++) {
IN[i+len]=nodelist[i].getAttribute("ItemName");
INum[i+len]=nodelist[i].getAttribute("ItemNumber");
IDes[i+len]=nodelist[i].getAttribute("ItemDescription");

IFN[i+len]=nodelist[i].childNodes[0].getAttribute("ItemFieldName");
//str=str+" "+nodelist[i].childNodes[0].getAttribute("ItemFieldName");
//if(i==0)
getSubItem(nodelist[i]);

}//for
// alert(str);
}
else
{
maxNum = xmlDoc_out.getElementsByTagName("SubItem").length;
var nl=xmlDoc_out.selectNodes("/ICD10ProceduresCategory/SubCategory/Section/Item/SubItem");
var len=SIN.length ;
for(var i=0;i<maxNum;i++) {

if (nl[i].childNodes[0]!=null) {

SIFN[i+len]=nl[i].childNodes[0].getAttribute("FieldName");
SIN[i+len]=nl[i].getAttribute("SubItemName");
SINum[i+len]=nl[i].getAttribute("SubItemNumber");
SIDes[i+len]=nl[i].getAttribute("SubItemDescription");
}
}

}

}
function getParentItem(filename)
{
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("http://localhost/obs/Usercontrol/"+filename);
var maxNum_out = xmlDoc.getElementsByTagName("Section").length;
var nl=xmlDoc.selectNodes("/ICD10Category/SubCategory/Section");
var len=SN.length;

for(var i=0;i<maxNum_out;i++) {
SN[i+len]=nl[i].getAttribute("SecName");

SNum[i+len]=nl[i].getAttribute("SecNumber");
SDes[i+len]=nl[i].getAttribute("SecDescription");
SFN[i+len]=nl[i].childNodes[0].getAttribute("SecFieldName")
}
//alert(SFN[0]);
}
function getSubItem(node)
{
var nl=node.childNodes;
var len=SIN.length;
var str="";
//if (nl!=undefined)
// alert(node.childNodes.length);
for(var i=1;i<node.childNodes.length;i++) { //step the first //
//str=str+" "+nl[i].childNodes[0].getAttribute("SubItemFieldName");

if (nl[i].childNodes[0]!=null)
{
SIFN[i+len]=nl[i].childNodes[0].getAttribute("SubItemFieldName");
SIN[i+len]=nl[i].getAttribute("SubItemName");
SINum[i+len]=nl[i].getAttribute("SubItemNumber");
SIDes[i+len]=nl[i].getAttribute("SubItemDescription");
}

}
//alert(str);
}
function onkey()
{
if (event.ctrlKey)
{
keyctrl=1;
//alert(keyctrl);
}

}
function ICD10tip(obj)
{
var strDes="";
var strNum="";
var strName="";
var eid=obj.id; //Current Control ID//

//if Current Control ID has "s" ,Remove it//
if (eid.indexOf("s")!=-1)
eid=eid.substr(1);

//If not key ctrl then return//
//onkey();
//if (keyctrl!=1)
//return;
//===========//


for(var i=0;i<SFN.length;i++) { //tip Section node//
SFN[i]= SFN[i].replace("_","");

if (SFN[i]==eid)
wtc(SDes[i],SNum[i],SN[i]);


}
//alert(obj.id);
for(var i=0;i<IFN.length;i++) {
IFN[i]= IFN[i].replace("_","");
if (IFN[i]==eid)
{

wtc(IDes[i],INum[i],IN[i]);
}
//display child tip info//
if (SIFN[i]!=null){

SIFN[i]= SIFN[i].replace("_","");
if (SIFN[i]==eid)
wtc(SIDes[i],SINum[i],SIN[i]);

}


} //for


}
//LoadOneXml("ICD10_Congenital.xml");
//LoadOneXml("ICD10_Genitourinary.xml");
//LoadOneXml("ICD10_GynProcedures.xml");
//LoadOneXml("ICD10_ObsProcedures.xml");
LoadOneXml("ICD10_Obstetrics.xml");
//LoadOneXml("ICD10_Perinatal.xml");
//alert(IN.length);
//====================================================//
posted @ 2005-09-21 16:06  PointNet  阅读(2145)  评论(1编辑  收藏  举报