用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('\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前面,意图先载入事件.
有四种状态:
- DOM正在加载
- DOM已经加载完数据
- DOM已经可以使用,但某些部分还无法访问
- 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);
DOM2级支持基本DOM操作创建xml,但是不支持loadXML()方法,无法简易的通过字符串创建xml文档。
有load()方法,也不能跨域加载。xmlDom.load('demo.xml');
没有xmlDom.xml序列化,DOM2没有xml序列化方法
获取标签里面的值,除了
xmlDom.getElementByTagName('user')[0].firstChild.nodeValue;
还有
xmlDom.getElementByTagName('user')[0].textContent;//w3c标准的
同步异步加载
xmlDom.async = false;
xmlDom.load('demo.xml'); //只支持firfox opera模拟loadXML()方法,可以简易创建xml字符串
var xmlParser = new DOMParser(); //创建对象
var xmlStr = 'Lee';
var xmlDom = xmlParser.parserFromString(xmlStr,'text/xml');
模拟.xml属性序列化字符串
var serializer = new XMLSerializer();
var xml = serializer.serializeToString(xmlDom);
用javascript操作xml的更多相关文章
- JavaScript操作XML
JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...
- JavaScript操作XML (一)
JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准编程接口 中立于平台和语言 W3C 的标 ...
- JavaScript操作XML工作记录
JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...
- JavaScript操作XML(二)
上一篇介绍了XML的结构以及节点之间的关系这一篇介绍浏览器内建的XML解析器以及JavaScript是如何加载XML的. 大多数浏览器都有读取和操作 XML 的内建 XML 解析器. 解析器(XML ...
- 用 javascript 操作 xml
1. [代码]js代码 <script language="JavaScript"><!--var doc = new ActiveXObject(&qu ...
- 用javascript操作xml(二)JavaScript 将XML转换成字符串(xml to string)
function xmlToString(xmlData) { var xmlString; //IE if (window.ActiveXObject){ xmlString = xmlData.x ...
- 用javascript操作xml(三)关于Jquery的html()不兼容IE的解决办法
当 $("#xxx").html(data); 不兼容,方法替换为 document.getElementById("xxx").innerHTML=data;
- 使用JavaScript操作DOM节点元素的常用方法(创建/删除/替换/复制等)
getElementById(id)这是通过id来访问某一元素,最常用的之一,例:<html><body><div id="myid">test ...
- JQuery制作网页—— 第三章 JavaScript操作DOM对象
1. DOM:Document Object Model(文档对象模型): DOM操作: ●DOM是Document Object Model的缩 ...
随机推荐
- IOI1998 hdu1828 poj1177 Picture
写了一发扫描线竟然狂WA不止,hdu死活过不了,poj和当时IOI的数据(还花了我1dsdn积分..)都过了. 然后看到谋篇blog里有评论,把数据拿下来发现WA了. 数据是 20 0 1 11 0 ...
- mysql数据库表中判断字段是否存在,如果不存在则创建该字段
$key_answer = 'answer'.$question_num; $test_question = mysql_query('DESCRIBE question_manage {$key_q ...
- android97 播放音频 有进度条控制
package com.itheima.musicplayer; import android.os.Bundle; import android.os.Handler; import android ...
- 【转】Cocos2d-x 2.x CCSprite 灰白图的生成(利用shader设置)——2013-08-27 21
猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=325 游戏中人物死掉后要把人物头 ...
- java窗体与Flash交互
最近在研究flash,用flash去读取文件很简单,但是存储文件就很麻烦了. 因此想到用java的窗体进行交互. 下面是DJNativeSwing-SWT-1-0-3-20140708的下载链接: h ...
- MyEclipse Hibernate Reverse Engineering 找不到项目错误
解决办法:在项目下找到.project文件,在最后的natures标签加入下面红色的一行代码. <natures> <nature>com.genuitec.ec ...
- skynet启动过程_bootstrap
这遍摘自skynet 的wiki skynet 由一个或多个进程构成,每个进程被称为一个 skynet 节点.本文描述了 skynet 节点的启动流程. skynet 节点通过运行 skynet 主程 ...
- PHP + ajax 实现异步登录验证
login.html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- ReadWriteLock与ReentrantReadWriteLock
JAVA的JUC包中的锁包括"独占锁"和"共享锁".JUC中的共享锁有:CountDownLatch.CyclicBarrier.Semaphore.Reent ...
- win8 64位操作系统 Microsoft Visual Studio 2010在IIS上调试 “此任务要求应用程序具有提升的权限”等问题
很少在IIS上调试程序,因系统原因,所以不得不在IIS上预览项目和调试项目(因为只能在IIS上预览项目才能看到项目里的数据). 1.附加到进程(注意附加到进程前必须预览项目) 2.选择调试项 需要注意 ...