Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库

Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的JavaScript库,第二部分为ajax与jsp的数据交互,第三部分为javabean实现数据的插入。本文为该过程的第一部分即构建解析xml文件的javascript库。

本文以以下xml文件为例进行解析:

[html]  view plain  copy
  1. <span style="font-size:14px;">?xml   version="1.0"   encoding="GB18030"?>     
  2.   <states>            
  3.       <users>  
  4.            <userId >001  
  5.                 <userName>john</userName>  
  6.                 <rootManage>commomUser</rootManage>  
  7.            </userId>  
  8.            <userId>002  
  9.                 <userName>jim</userName>  
  10.                 <rootManage>manager</rootManage>  
  11.            </userId>  
  12.            <userId>003  
  13.                 <userName>mat</userName>  
  14.                 <rootManage>superManager</rootManage>  
  15.            </userId>  
  16.         </users>  
  17.   </states>   </span>  


对于以上xml文件的解析涉我们分四种不同的情况进行:

(1)取得第任意个标签名为nodeName下的子标签名为childNodeName的值。该函数中nodeName为任意标签名,xmlName为需要解析的xml文件的路径,childNodeName为nodeName下的子标签名,nodeNo指的是第几个nodeName。以上面的xml文件为例,如果我们想要获取第一个标签名为userId标签下的userName标签下的值,那么我们调用该方法所输入的参数应该为:readOneLable("userId","authority.xml,"userName",0),返回结果为一个数组,该数组中盛放的数据便是“john“

[javascript]  view plain  copy
  1. <span style="font-size:12px;"><span style="font-size:14px;">function readOneLable(nodeName,xmlName,childNodeName,nodeNo){  
  2.     var my_array = new Array();  
  3.     //加载xml文件  
  4.     xmlDoc=loadXMLDoc(xmlName);  
  5.                   
  6.     //取得节点名为nodeName的节点  
  7.         var d = xmlDoc.getElementsByTagName(nodeName)[nodeNo];                
  8.     var ab = d.childNodes;  
  9.     for(var i = 0;i<ab.length;i++){  
  10.           if(ab[i].nodeName == childNodeName){  
  11.             my_array.push(ab[i].childNodes[0].nodeValue);                         
  12.           }  
  13.     }  
  14.     return my_array;  
  15. </span>}    </span>  

(2)取得标签名为nodeName下的所有子标签名为childNodeName的值。该函数中nodeName为任意标签名,xmlName为需要解析的xml文件的路径,childNodeName为nodeName下的子标签名。以以上xml文件为例,我们需要获取userId标签下的所有userName标签的值,那么我们调用该方法传入的参数为:readAllLable("authority.xml","userId","userName"),调用该方法返回的结果为一个数组,盛放的内容为”jhon“,"jim","mat"。

[javascript]  view plain  copy
  1. <span style="font-size:14px;">function readAllLable(xmlName,nodeName,childNodeName){  
  2.     var my_array = new Array();  
  3.     //加载xml文件  
  4.     xmlDoc=loadXMLDoc(xmlName);  
  5.     var d = xmlDoc.getElementsByTagName(nodeName);  
  6.     for(var i=0;i<d.length;i++){  
  7.         var ab = d[i].childNodes;  
  8.         for(var k=0;k<ab.length;k++){  
  9.               if(ab[k].nodeName == childNodeName){  
  10.                my_array.push(ab[k].childNodes[0].nodeValue);  
  11.               }   
  12.             }  
  13.          }  
  14.     return my_array;  
  15. }</span>  
(3)取得标第一个签名为nodeName下的所有子标签的值。该函数中nodeName为任意标签名,xmlName为需要解析的xml文件的路径,以以上xml文件为例,我们需要获取第一个标签名为userId下的所有子标签的值,那么调用该方法传入的参数为:readOneChildNode("authority.xml","userId"),调用该方法返回的值为一个数组,该数组中盛放的内容为 ”john“,"commonUser"。

[javascript]  view plain  copy
  1. function readOneChildNode(xmlName,nodeName){  
  2.     var my_array = new Array();  
  3.     //加载xml文件  
  4.     xmlDoc=loadXMLDoc(xmlName);           
  5.     var d = xmlDoc.getElementsByTagName(nodeName)[0].childNodes;  
  6.     my_array.push(d[0].nodeValue);  
  7.     for(var i=0;i<d.length;i++){  
  8.          if(d[i].nodeName !="#text"){  
  9.           my_array.push(d[i].childNodes[0].nodeValue);  
  10.          }  
  11.     }             
  12.     return my_array;  
  13. }  
(4)取得所有标签名为nodeName下的所有子标签的值。该函数中nodeName为任意标签名,nodeName为需要解析的xml文件的路径,意义上xml文件为例,我们需要获取标签名为userId下的所有子标签的值,那么调用该方法需要传入的参数为:readAllChildNode("authority.xml","userId"),调用该方法返回的值为一个数组,该数组中盛放的内容为”john“,”commonUser“,”jim“,"manager","mat","superManager"。

[javascript]  view plain  copy
  1. function readAllChildNode(xmlName,nodeName){  
  2.     var my_array = new Array();  
  3.     //加载xml文件  
  4.     xmlDoc=loadXMLDoc(xmlName);  
  5.                   
  6.     var d = xmlDoc.getElementsByTagName(nodeName);  
  7.                   
  8.     for(var i=0;i<d.length;i++){  
  9.         var m = d[i].childNodes;  
  10.         my_array.push(d[i].childNodes[0].nodeValue);  
  11.         for(var k=0;k<m.length;k++){                   
  12.              if (m[k].nodeName != "#text") {  
  13.              my_array.push(m[k].childNodes[0].nodeValue);  
  14.              }                    
  15.             }                     
  16.         }  
  17.         return my_array;  
  18. }  

至此,简单的解析xml文件的js库构建完毕,可以根据自己的需要通过调用不同的方法来取得相应节点的值。在下一篇文章中将会介绍使用ajax与jsp进行数据交互。


Ajax实现xml文件数据插入数据库(二)---ajax实现与jsp的数据交互。

Ajax实现xml文件数据插入数据库(三)---javaBean实现数据库插入。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值