用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('\nLee\n');

加载外部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+
'\n错误代码:'+xmlDom.parseError.errorCode+
'\n错误解释:'+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);

用javascript操作xml的更多相关文章

  1. JavaScript操作XML

    JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...

  2. JavaScript操作XML (一)

    JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准编程接口 中立于平台和语言 W3C 的标 ...

  3. JavaScript操作XML工作记录

    JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...

  4. JavaScript操作XML(二)

    上一篇介绍了XML的结构以及节点之间的关系这一篇介绍浏览器内建的XML解析器以及JavaScript是如何加载XML的. 大多数浏览器都有读取和操作 XML 的内建 XML 解析器. 解析器(XML ...

  5. 用 javascript 操作 xml

    1. [代码]js代码     <script language="JavaScript"><!--var doc = new ActiveXObject(&qu ...

  6. 用javascript操作xml(二)JavaScript 将XML转换成字符串(xml to string)

    function xmlToString(xmlData) { var xmlString; //IE if (window.ActiveXObject){ xmlString = xmlData.x ...

  7. 用javascript操作xml(三)关于Jquery的html()不兼容IE的解决办法

    当 $("#xxx").html(data); 不兼容,方法替换为 document.getElementById("xxx").innerHTML=data;

  8. 使用JavaScript操作DOM节点元素的常用方法(创建/删除/替换/复制等)

    getElementById(id)这是通过id来访问某一元素,最常用的之一,例:<html><body><div id="myid">test ...

  9. JQuery制作网页—— 第三章 JavaScript操作DOM对象

    1. DOM:Document Object Model(文档对象模型):          DOM操作:                   ●DOM是Document Object Model的缩 ...

随机推荐

  1. spring的有状态BEAN和无状态BEAN

    有状态会话bean   :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”:一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束.即每个用户最初都会得到一 ...

  2. linux环境下tcpdump源代码分析

    Linux 环境下tcpdump 源代码分析 韩大卫@吉林师范大学 tcpdump.c 是tcpdump 工具的main.c, 本文旨对tcpdump的框架有简单了解,只展示linux平台使用的一部分 ...

  3. &lt;Android&gt;从窗口泄漏谈android:configChanges属性

    今天有幸去哥们的大公司做了半天的暂时工,一个偶现的Bug折腾了他好久,好不easy今天抓到了异常Log日志.大致的意思就是android.view.windowleaked--窗口泄漏.我在网上查了资 ...

  4. [Javascript] Use Number() to convert to Number if possilbe

    Use map() and Number() to convert to number if possilbe or NaN. var str = ["1","1.23& ...

  5. [ES6] 22. Const

    'const' keyword is for creating a read only variable, something you can never change once created. ' ...

  6. Antelope与 Barracude MYSQL 文件格式

    作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#163.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究. Antelope是 ...

  7. zTree下拉菜单多级菜单多选实现

    惯例,先上图: 这是在一个项目中,为了满足样式美观.多级菜单以及多选而将zTree插件更改过后的效果. 在实际的开发过程中,本来zTree也是可以满足需求的,但是zTree多选的话需要checkbox ...

  8. 两种JSON数据类型的解析

    son数据格式解析我自己分为两种: 一种是普通的,一种是带有数组形式的: 普通形式的:服务器端返回的json数据格式如下: {"userbean":{"Uid" ...

  9. ThinkPHP函数详解:A方法

    A方法用于在内部实例化控制器,调用格式:A('[项目://][分组/]模块','控制器层名称')最简单的用法: $User = A('User'); 复制代码 表示实例化当前项目的UserAction ...

  10. C#的语句

    什么是语句?语句可以是以分号结尾的单行代码,或者是语句块中的一系列单行语句.语句块括在括号 {} 中,并且可以包含嵌套块. 1,语句的类型 (1)声明语句 声明语句主要是引入新的变量和常量.变量的声明 ...