• 用javascript操作xml


    用javascript操作xml

    可以使用标准DOM操作。

    IE创建XML MSXML2.0DOMDocument

    function createXMLDOM(){
        var version = [
            'MSXML2.0DOMDocument6.0',
            'MSXML2.0DOMDocument3.0',
            'MSXML2.0DOMDocument'
        ];
    
    for (var i = 0; i < version.length; i++) {
        try{
            var xmlDom = new ActiveXObject(version[i]);
            return xmlDom;
        }catch(e){
            //跳过  有一个错了
        }
    }
    throw new Error("您的系统或者浏览器不支持XML库");  //所有的都错了
    

    }

    加载xml字符串 loadXML

    xmlDom.loadXML(' Lee ');

    加载外部xml load

    xmlDom.load('demo.xml'); //其他的操作一样,用xmlDom.

    序列化xml xml

    xmlDom.xml //alert(xmlDom.xml);

    获取标签 getElementsByTagName('user')[0];

    var user = xmlDom.getElementsByTagName('user')[0]; //alert(user);

    获取节点类型 nodeType

    user.nodeType;

    获取节点名 nodeName TagName

    user.nodeName;

    获取节点内值 (不能用innerHTML,因为innerHTML它不是标准DOM)

    user.firstChild.nodeValue;

    创建标签 createElement();

    var b = xmlDom.createElement('bbb');

    获取根节点 documentElement

    var root = xmlDom.documentElement;

    添加节点 appendChild

    root.appendChild(b);

    创建节点文本 createTextNode();

    var bText = xmlDom.createTextNode('kkk'); b.appendChild(bText);

    IE服务器端同步和异步使用XML async

    无法跨域加载。

    在服务器端默认使用的是异步加载。

    无法读取打印文件内容。

    1、在服务器端,使用的异步加载,load()还没有加载完毕,就去打印。

    使用同步加载

    xmlDom.async = false; //同步是false,异步是true

    使用同步请求超时,容易造成浏览器假死。

    推荐使用异步,但是无法加载打印。使用 onreadystatechange 这个事件需写在load前面,意图先载入事件.

    有四种状态:

    1. DOM正在加载
    2. DOM已经加载完数据
    3. DOM已经可以使用,但某些部分还无法访问
    4. DOM已经完全可以用

    用readyState可以获取就绪状态值。

    xmlDom.onreadystatechange = function(){
        if(xmlDom.readyState == 4)
            alert(xmlDom.xml);
        }
    } 
    

    xmlDom.load('demo.xml');

    错误提示 parseError errorCode

    xmlDom.onreadystatechange = function(){
        if(xmlDom.readyState == 4)
            if(xmlDom.parseError.eerorCode == 0){
                alert(xmlDom.xml);
            }else{
                throw new Error('错误行号:'+xmlDom.parseError.line+
                                '
    错误代码:'+xmlDom.parseError.errorCode+
                                '
    错误解释:'+xmlDom.parseError.reason);
            }
        }
    } 
    

    xmlDom.load('demo.xml');

    DOM2级XML

    创建XML document.implementation.createDocument('','root','');

    //第一个参数命名空间,第二个参数xml根标签,第三个参数文档申明null

    var xmlDom = document.implementation.createDocument('','root',''); alert(xmlDom);

    1. DOM2级支持基本DOM操作创建xml,但是不支持loadXML()方法,无法简易的通过字符串创建xml文档。 有load()方法,也不能跨域加载。

      xmlDom.load('demo.xml');

    2. 没有xmlDom.xml序列化,DOM2没有xml序列化方法

    3. 获取标签里面的值,除了

      xmlDom.getElementByTagName('user')[0].firstChild.nodeValue;

      还有

      xmlDom.getElementByTagName('user')[0].textContent;//w3c标准的

    4. 同步异步加载

      xmlDom.async = false; xmlDom.load('demo.xml'); //只支持firfox opera

    5. 模拟loadXML()方法,可以简易创建xml字符串

      var xmlParser = new DOMParser(); //创建对象

      var xmlStr = 'Lee';

      var xmlDom = xmlParser.parserFromString(xmlStr,'text/xml');

    6. 模拟.xml属性序列化字符串

      var serializer = new XMLSerializer();

      var xml = serializer.serializeToString(xmlDom);

    -----------------------------------------------------------------------
    Simple is Beautiful,Less is More.
    --FuGardenia
  • 相关阅读:
    在线重定义 half
    系统测试概述 half
    Linux常用性能检测命令 half
    关于robotium half
    hudson集成 half
    铺满浏览器窗口的界面设计
    Intellij IDEA配置优化转载
    window下安装zookeeper
    kbengine集群控制工具
    使用installer安装kbengine
  • 原文地址:https://www.cnblogs.com/yunqianduan/p/3945267.html
Copyright © 2020-2023  润新知