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

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

?xml   version="1.0"   encoding="GB18030"?>
<states>
<users>
           <userId >001
                <userName>john</userName>
                <rootManage>commomUser</rootManage>
           </userId>
           <userId>002
                <userName>jim</userName>
                <rootManage>manager</rootManage>
           </userId>
           <userId>003
                <userName>mat</userName>
                <rootManage>superManager</rootManage>
           </userId>
        </users>
</states>

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

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

function readOneLable(nodeName,xmlName,childNodeName,nodeNo){
var my_array = new Array();
//加载xml文件
xmlDoc=loadXMLDoc(xmlName); //取得节点名为nodeName的节点
var d = xmlDoc.getElementsByTagName(nodeName)[nodeNo];
var ab = d.childNodes;
for(var i = 0;i<ab.length;i++){
if(ab[i].nodeName == childNodeName){
my_array.push(ab[i].childNodes[0].nodeValue);
}
}
return my_array;
}

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

function readAllLable(xmlName,nodeName,childNodeName){
var my_array = new Array();
//加载xml文件
xmlDoc=loadXMLDoc(xmlName);
var d = xmlDoc.getElementsByTagName(nodeName);
for(var i=0;i<d.length;i++){
var ab = d[i].childNodes;
for(var k=0;k<ab.length;k++){
if(ab[k].nodeName == childNodeName){
my_array.push(ab[k].childNodes[0].nodeValue);
}
}
}
return my_array;
}

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

function readOneChildNode(xmlName,nodeName){
var my_array = new Array();
//加载xml文件
xmlDoc=loadXMLDoc(xmlName);
var d = xmlDoc.getElementsByTagName(nodeName)[0].childNodes;
my_array.push(d[0].nodeValue);
for(var i=0;i<d.length;i++){
if(d[i].nodeName !="#text"){
my_array.push(d[i].childNodes[0].nodeValue);
}
}
return my_array;
}

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

function readAllChildNode(xmlName,nodeName){
var my_array = new Array();
//加载xml文件
xmlDoc=loadXMLDoc(xmlName); var d = xmlDoc.getElementsByTagName(nodeName); for(var i=0;i<d.length;i++){
var m = d[i].childNodes;
my_array.push(d[i].childNodes[0].nodeValue);
for(var k=0;k<m.length;k++){
if (m[k].nodeName != "#text") {
my_array.push(m[k].childNodes[0].nodeValue);
}
}
}
return my_array;
}

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

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

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

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

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

    在上一篇文章中我们成功得到了重新组织后的数据,接下来需要做的便是将数据插入到数据库中了.在与数据库打交道的过程中有一些方法是普遍的,我们将这些通用方法封装到一个DbUtil类中,以便复用,封装好的Db ...

  2. springMVC(5)---导入excel文件数据到数据库

    springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...

  3. mysql 带换行符的字符串数据插入数据库异常

    带换行符的字符串数据插入数据库异常现象 某个字符串类型的字段中部分记录中带换行符,数据同步插入异常,提示如下类似警告信息: Incorrect string value:'<aherf=&quo ...

  4. Android -- 创建XML文件对象及其序列化, pull解析XML文件

    1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...

  5. Yii读取TXT文件数据插入到数据库

    个人平时会用到的方法,记录一下并分享给需要的朋友,Yii批量添加还需要clone一下model才可以,不然只会插入一条数据. 也可以把文件通过参数的方式调入到方法中. // 读取CVS文件 funct ...

  6. C/s从文件(TXT)中读取数据插入数据库

    流程: 1.当按钮单击时,弹出OpenFileDialog 2.判断后缀名是否合法 3.导入数据库 按钮事件中的代码: 1.判断用户是否选中文件. 2.判断用户选择的文件是否为txt //第一步,当按 ...

  7. 【mybatis xml】数据层框架应用--Mybatis 基于XML映射文件实现数据的CRUD

    使用MyBatis框架进行持久层开发 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架. MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索. MyBa ...

  8. 从word得到表格数据插入数据库(6位行业代码)

    复制表格到excel 点击表格左上角选中全部表格,然后crtl+c,再贴到excel中 可以发现,大类代码,单元格往下走,碰到下一个有值的之前,都是上一个的范围 填充空白单元格 1.选中前四列,然后c ...

  9. java读取本地txt文件并插入数据库

    package com.cniia.ny.web.control.configManage; import java.io.BufferedReader; import java.io.File; i ...

随机推荐

  1. javascirpt怎样模仿块级作用域(js高程笔记)

    因为javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包括函数中而非语句中创建的. 如: function outputNumbers(count){ for(var i= ...

  2. UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)

    在本人之前的一篇文章<<Appium基于安卓的各种FindElement的控件定位方法实践和建议>>第二章节谈到Appium可以通过使用UIAutomator的方法去定位And ...

  3. How to:Installshield判断操作系统是否为64位,并且为操作注册表进行设置

    原文:How to:Installshield判断操作系统是否为64位,并且为操作注册表进行设置 IS脚本操作注册表在64位平台下必须有特殊的设置 if (SYSINFO.bIsWow64) then ...

  4. css中字符换行的一些问题

    -------我们在处理文章的内容的过程中由于文章内容混杂有中文.英文.数字等其他字符,而我们常见的英文和数字是无法在包裹元素中自动换行,这往往会导致元素被撑破,如下图所示: css中word-bre ...

  5. 用CQRS+ES实现DDD

    用CQRS+ES实现DDD 这篇文章应该算是对前三篇的一个补充,在写之前说个题外话,有园友评论这是在用三层架构在写DDD,我的个人理解DDD是一种设计思想,跟具体用什么架构应该没有什么关系,DDD也需 ...

  6. C#JSON序列化与反序列化

    原文:C#JSON序列化与反序列化 windows phone学习也有一段时间了,想要做一个新闻客户端练练手,于是就在网上找看有没有接口之类.在天狗播客找到了热点热词新闻资讯API开放接口,接口提供的 ...

  7. php学习之路:php在iconv功能 详细解释

    iconv函数库可以完毕各种字符集间的转换,是php编程中必不可少的基础函数库. 使用方法例如以下: $string = "亲爱的朋友欢迎訪问胡文芳的博客.希望给您带来一点点的帮助!&quo ...

  8. 安装Windows2008操作系统 - 初学者系列 - 学习者系列文章

    Windows2008这款服务器操作系统不知道有多少服务器在使用,毕竟前面有经典的2003系统,后续有2012操作系统.具体就不讨论这些了.下面就对Windows2008服务器操作系统的安装进行介绍. ...

  9. 免费的编程中文书籍索引 from github

    免费的编程中文书籍索引 免费的编程中文书籍索引,欢迎投稿. 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版. stackoverflow 上的程序员应该阅读的非编程类书籍有哪些 ...

  10. jquery防止事件冒泡和取消默认行为案例

    ----------------js取消事件冒泡: window.event.cancelBubble=true; --------------jquery事件参数可以防止事件冒泡: $(" ...