JavaScript解析读取XML文档

应项目之需求,需用JS操作XML文档,遂上网查资料,感觉这篇文章还不错,特转载到此地,与大家共享!

原文章地址:http://hi.baidu.com/shirdrn/blog/item/7310cd4a0d1b312509f7ef9c.html

JavaScript解析读取XML文件,主要就是加载并解析XML文件,然后就可以测试解析的XML文件的内容,打印输出来。

编写了一个JavaScript的类来实现读取一个XML文件中的数据,实现代码如下所示:

   <script>
/**
* @author Shirdrn
*/

function XMLDoc(){};    // 定义一个XMLDoc类

XMLDoc.prototype.xmlFile = "";    // xmlFile为XMLDoc的一个成员,是指“.xml”文件
XMLDoc.prototype.parseXMLDoc = function(){ // 加载解析XML文件的成员方法
   var docParser;
   if(window.ActiveXObject) {   // IE浏览器支持
    docParser = new ActiveXObject("Microsoft.XMLDOM");
    docParser.async = "false";
    docParser.load(this.xmlFile);
    return docParser;
   }
   else if(window.DOMParser) { // Mozillia浏览器支持
    docParser = new DOMParser()
    return docParser.parseFromString(this.xmlFile,"text/xml");
   }
   else { // 如果不是IE和Mozillia浏览器则无法解析,返回false。
    return false;
   }
}

XMLDoc.prototype.print = function(readTagName,readTagCnt) { // 打印输出读取的XML文件的内容信息
   var xmlDoc = this.parseXMLDoc(); // 调用成员方法parseXMLDoc()加载解析XML文件
   var users = xmlDoc.getElementsByTagName(readTagName); // 获取指定标签名称的数据的一个数组users
   for(var i=0 ; i<users.length ; i++) {   // 双重循环迭代输出
    document.write("<B>第" + (i+1) + "条记录信息:</B><BR>");
    for(var j=0 ; j<readTagCnt ; j++) {
     var tagname = users[i].childNodes[j].tagName;
     var textvalue = users[i].childNodes[j].text;
     document.write(tagname + " = " + textvalue + ".<BR>");
    }
   }
}


var xmlDoc = new XMLDoc(); // 创建一个XMLDoc了IDE对象实例
xmlDoc.xmlFile = "user.xml"; // 设置对象实例的成员变量的数据
xmlDoc.print("user",6); // 打印输出
</script>

 

其中,我们测试使用的XML文件user.xml的内容如下所示:

<?xml version="1.0" encoding="utf-8" ?>
- < users >
-     < user >
         < id > 22240319830000 </ id >
        < name > Shirdrn </ name >
         < age > 26 </ age >
        < gender > </ gender >
        < email > shirdrn@hotmail.com </ email >
         < phone > 13843140000 </ phone >
    </ user >
-     < user >
         < id > 22040319860001 </ id >
         < name > Linda </ name >
         < age > 23 </ age >
        < gender > </ gender >
        < email > linda@hotmail.com </ email >
        < phone > 13843140002 </ phone >
    </ user >
</ users >

运行测试程序,解析结果输出如下所示:

第1条记录信息:
id = 22240319830000.
name = Shirdrn.
age = 26.
gender = 男.
email = shirdrn@hotmail.com.
phone = 13843140000.
第2条记录信息:
id = 22040319860001.
name = Linda.
age = 23.
gender = 女.
email = linda@hotmail.com.
phone = 13843140002.

在解析XML文件的时候,要保证对不同类型的浏览器提供支持,这里主要对IE和Mozillia浏览器,否则可能无法解析。

关于其它的说明,可以参看程序中的注释。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值