使用JavaScript解析xml文件或xml格式字符串

javascript中,不论是解析xml文件,还是xml格式的字符串,都是通过DOM对象来进行操作的。

假定xml格式字符串为xmlStr,首先加载xml

 

 

XMLDOM对象出来了,接下来便是对Dom的操作部分,随便写一个xml字符串简单举个例子:

var xml;
    
    xml = '<?xml version="1.0" encoding="GB2312"?><Output><Field id ="return" text ="111">0</Field><Field id ="errMsg" text ="信息">成功</Field><Field id ="state" text ="状态字">无</Field><DataArea id ="D00E00" text ="参保人员基本信息"><Field id ="EMPNO" text ="编号"></Field><Field id ="ICNO" text ="IC卡号"></Field></DataArea></Output>';
    
    经过上面的。。。加载进来后
   
    // 加载进来地xml~~
    var temp = xmlDoc.xml;
    // 取得所有Field 元素
    var elementList;
    elementList = xmlDoc.getElementsByTagName('Field');
    // 遍历
    for (var j = 0;j < elementList.length; j++) {
        var value;
        // 取得当前元素属性id的值
        value = elementList[j].getAttribute('id');
        alert(value);
        // 可以设定当前元素属性id的值
        elementList[j].setAttribute('id','ooo');

        var childs;
        // 当前元素的子节点
        childs = list[j].childNodes;
        // 如果没有子节点(<tagName>...</tagName>间没有任何值)就不能取子节点,否则会出错。比如id是ICNO的那个元素
        if (childs.length > 0) {
            // childs[0]是第一个当然就代表当前元素的值了,nodeValue可以取得这个节点的值。
            alert(childs[0].nodeValue);
        }
    }

// 我们假定不知道客户端使用的浏览器,所以对于XMLDom的创建,尽量满足多浏览器的环境

    var xmlDoc;

    //如果ie 此判断和下面其他浏览器的判断可以忽略,此处只为说明代码
    if (window.ActiveXObject) {

        // 由于不知道ie的版本,尽量保持程序的兼容性
        var ARR_ACTIVEX = ["MSXML4.DOMDocument","MSXML3.DOMDocument","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XmlDom"];
        // XMLDOM是否创建成功的标志
        var XmlDomflag = false;
        for (var i = 0;i < ARR_ACTIVEX.length && !XmlDomflag ;i++) {
            try {
                // 尝试创建对象,如果不能正常创建,它会抛出一个错误
                var objXML = new ActiveXObject(ARR_ACTIVEX[i]);
                
                // 如果程序能运行到这里,则说明XMLDom对象已经成功创建,所以保存
                xmlDoc = objXML;
                XmlDomflag = true;
            } catch (e) {
            }
        }
        if (xmlDoc) {
            xmlDoc.async    = false;
            // 加载xml,如果是xml文件的话则调用load(xmlFile)
            xmlDoc.loadXML(xmlStr);
        } else {
            return;
        }
    } else if (document.implementation && document.implementation.createDocument) { // 判断是不是遵从标准的浏览器
        // 建立DOM对象的标准方法
        xmlDoc = document.implementation.createDocument('', '', null);
        xmlDoc.loadXML(xmlStr);    
    } else {
        // 进这里我也没辙了
        return;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值