zoukankan      html  css  js  c++  java
  • DOM操作XML文件

    一、IE中的XML(IE低版本才支持)

    在统一的正式规范出来以前,浏览器对于 XML 的解决方案各不相同。DOM2 级提出了动态创建 XML DOM 规范,DOM3 进一步增强了 XML DOM。

    所以,在不同的浏览器实现XML 的处理是一件比较麻烦的事情。

    1.创建 XMLDOM 对象
    IE 浏览器是第一个原生支持 XML 的浏览器,而它是通过 ActiveX 对象实现的。这个对象,只有 IE 有,一般是 IE9 之前采用。

    微软当年为了开发人员方便的处理 XML,创建了MSXML 库,但却没有让 Web 开发人员通过浏览器访问相同的对象。

    var xmlDom = new ActiveXObject('MSXML2.DOMDocument');

    在这六个版本中微软只推荐三种:
      1.MSXML2.DOMDocument.6.0 最可靠最新的版本
      2.MSXML2.DOMDocument.3.0 兼容性较好的版本

      3.MSXML2.DOMDocument 仅针对 IE5.5 之前的版本

    这三个版本在不同的 windows 平台和浏览器下会有不同的支持,那么为了实现兼容,我们应该考虑这样操作:从 6.0->3.0->备用版本这条路线进行实现。

        function createXMLDOM() {
                var version = [
                    'MSXML2.DOMDocument.6.0',
                    'MSXML2.DOMDocument.3.0',
                    'MSXML2.DOMDocument'
                ];
                for (var i = 0; i < version.length; i ++) {
                    try {
                        var xmlDom = new ActiveXObject(version[i]);
                        return xmlDom;
                    } catch (e) {
                    //跳过
                    }
                }
                throw new Error('您的系统或浏览器不支持 MSXML!'); //循环后抛出错误
            }
            var xmlDom = createXMLDOM();
            alert(xmlDom);    

    2.载入 XML

    如果已经获取了 XMLDOM 对象,那么可以使用 loadXML()和 load()这两个方法可以分别载入 XML 字符串或 XML 文件。

    载入 XML 字符串:

        function createXMLDOM() {
                var version = [
                    'MSXML2.DOMDocument.6.0',
                    'MSXML2.DOMDocument.3.0',
                    'MSXML2.DOMDocument'
                ];
                for (var i = 0; i < version.length; i ++) {
                    try {
                        var xmlDom = new ActiveXObject(version[i]);
                        return xmlDom;
                    } catch (e) {
                    //跳过
                    }
                }
                throw new Error('您的系统或浏览器不支持 MSXML!'); //循环后抛出错误
            }
            var xmlDom = createXMLDOM();
            xmlDom.loadXML('<root version="1.0"><user>Lee</user></root>');//载入XML字符串
            alert(xmlDom.xml);//.xml属性可以序列化 XML,获取整个 XML 字符串
    
            
            //loadXML 参数直接就是 XML 字符串,如果想效果更好,可以添加换行符
    。

    载入 XML 文件:

    <?xml version="1.0" encoding="utf-8"?>
    <root>
        <user>Lee</user>
        <email>352019378@qq.com</email>
        <url>http://www.baidu.com</url>
    </root>
        function createXMLDOM() {
                var version = [
                    'MSXML2.DOMDocument.6.0',
                    'MSXML2.DOMDocument.3.0',
                    'MSXML2.DOMDocument'
                ];
                for (var i = 0; i < version.length; i ++) {
                    try {
                        var xmlDom = new ActiveXObject(version[i]);
                        return xmlDom;
                    } catch (e) {
                    //跳过
                    }
                }
                throw new Error('您的系统或浏览器不支持 MSXML!'); //循环后抛出错误
            }
            var xmlDom = createXMLDOM();
            xmlDom.load('test.xml'); //载入一个 XML 文件
            alert(xmlDom.xml);//.xml属性可以序列化 XML,获取整个 XML 字符串

    3.获取XML文档中的数据:

    当你已经可以加载了 XML,那么你就可以用之前学习的 DOM 来获取 XML 数据,比如标签内的某个文本。

       function createXMLDOM() {
                var version = [
                    'MSXML2.DOMDocument.6.0',
                    'MSXML2.DOMDocument.3.0',
                    'MSXML2.DOMDocument'
                ];
                for (var i = 0; i < version.length; i ++) {
                    try {
                        var xmlDom = new ActiveXObject(version[i]);
                        return xmlDom;
                    } catch (e) {
                    //跳过
                    }
                }
                throw new Error('您的系统或浏览器不支持 MSXML!'); //循环后抛出错误
            }
            var xmlDom = createXMLDOM();
            xmlDom.loadXML('<root version="1.0"><user>Lee</user></root>');//载入XML字符串
            
            var user = xmlDom.getElementsByTagName('user')[0]; //获取<user>节点
            alert(user.tagName); //获取<user>元素标签
            alert(user.firstChild.nodeValue); //获取<user>里的值 Lee,没有innerHTML(因为不是标准DOM)

    DOM 不单单可以获取 XML 节点,也可以创建。

    var email= xmlDom.createElement('email');//创建一个标签
    xmlDom.documentElement.appendChild(email);//将创建的标签加载到XML文件中

    总结:XML和XHTML一样可以通过标准DOM来操作

  • 相关阅读:
    PHP中cookie和session
    php冒泡排序 快速 选择 插入 排序
    闲置U盘变身最强大路由器
    网络工程师(CCIE)面试题大搜集
    华为与思科交换机的差别及需要注意到地方
    CISCO VSS与HSRP、VRRP、RSTP对比分析
    BNC接口、RJ45、RJ48之间区别
    CCIE找工作的七大职业走向(转载)
    2层交换机与3层交换机之间到底有什么差别!
    CISCO 6500系列交换机  简介
  • 原文地址:https://www.cnblogs.com/LO-ME/p/3662744.html
Copyright © 2011-2022 走看看