JavaScript中的XMLDOM对象

测试:
demo.xml中的内容:

js文件内容:
window.onload=function(){
//var v=returnXMLDOM();
//v.loadXML('<root><user>Lee</user></root>');//第一种 加载xml字符
//alert(v.xml);//序列化 打印出xml字符串
//第二种加载方式:加载外部xml文件
var v=returnXMLDOM();//得到创建的对象
v.load('demo.xml');//同一个目录下这样写 不然还需要加上文件的路径
alert(v.xml);//进行序列话 打印字符串
//操作这些xmldom节点 和之前的dom操作方法一样
var node= v.getElementsByTagName("B")[0];
//alert(node.nodeName);//B元素节点 所以nodename属性的值为B
//alert(node.nodeValue);//元素节点的nodevalue属性值为null
//alert(node.nodeType);//nodetype值为1
//现在需要通过B节点得到c节点
var cnode=node.childNodes[0];//得到第一个c节点 也是一个元素节点
alert(cnode.nodeName);//c元素节点 所以nodename属性的值为c
alert(cnode.nodeValue);//元素节点的nodevalue属性值为null
alert(cnode.nodeType);//nodetype值为1
alert(cnode.firstChild.nodeValue);//打印第一个c节点中的文本的值
}
function returnXMLDOM(){
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]);//如果没有异常 那么就创建xmldom对象成功 并且返回
return xmlDom;
} catch (e) {
//跳过
}
}
throw new Error("你的浏览器不支持XMLDOM对象");
}
运行结果:


------------------
使用domxml创建节点 并把添加
var xmldom=returnXMLDOM();//得到创建的xmldom对象
xmldom.load('demo.xml');//把xml文件加载进来
var rootA=xmldom.documentElement;//通过documentElement方法获取xmldom中的跟标签A
alert(rootA.tagName);//打印节点名称A
//下面完成节点的添加操作 为B节点添加一个兄弟节点E
var E=xmldom.createElement("E");//注意这里不是document对象创建的e节点 而是xmldom对象
E.appendChild(xmldom.createTextNode("这是E节点的子节点"));
//把E节点加入到根节点A中 成为B节点的兄弟节点
rootA.appendChild(E);
alert(xmldom.xml);

---------------------
加载方式,同步和异步:

js代码:
var xmldom=getXMLDOM();
xmldom.load('demo.xml');//加载的时候有两种模式:同步和异步 默认同步 true
alert(xmldom.xml);
//上面的代码什么都不会打印 主要是采用了异步加载的模式 load还没有加载完毕就去序列化打印字符串 当然没有数据
//下面使用同步方式 即load加载完毕之前是不会执行下面的代码的
xmldom.async=false;
alert(xmldom.xml);//此时可以正常打印出xml文件中的数据 function getXMLDOM(){
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("你的浏览器不支持XMLDOM对象");
}
xml代码:
<A>
<B>
<c>你好1</c>
<c>你好2</c>
</B>
</A>
运行效果:

同步可能会造成浏览器出现假死状态
------------
异步方式:

JavaScript中的XMLDOM对象的更多相关文章
- JavaScript中的事件对象
JavaScript中的事件对象 JavaScript中的事件对象是非常重要的,恐怕是我们在项目中使用的最多的了.在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含这所有与事件有 ...
- JavaScript中创建字典对象(dictionary)实例
这篇文章主要介绍了JavaScript中创建字典对象(dictionary)实例,本文直接给出了实现的源码,并给出了使用示例,需要的朋友可以参考下 对于JavaScript来说,其自身的Array对象 ...
- Javascript学习1 - Javascript中的类型对象
原文:Javascript学习1 - Javascript中的类型对象 1.1关于Numbers对象. 常用的方法:number.toString() 不用具体介绍,把数字转换为字符串,相应的还有一个 ...
- 简单使用JSON,JavaScript中创建 JSON 对象(一)
JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. ...
- JavaScript中的window对象
JavaScript中的window对象:http://www.cnblogs.com/kissdodog/archive/2013/01/01/2841464.html
- js:JavaScript中的ActiveXObject对象
JavaScript中的ActiveXObject对象作用: https://blog.csdn.net/pl1612127/article/details/77862174
- 详解javascript中的this对象
详解javascript中的this对象 前言 Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象.Javascript可以通过一定的 ...
- javascript中如何获取对象名
javascript中如何获取对象名 一.总结 一句话总结:将对象传入参数,看参数是否为函数(js中的对象和函数是一个意思么(函数肯定是对象)),对象参数.name属性即可获得 //版本4 funct ...
- JavaScript中的global对象,window对象以及document对象的区别和联系
JavaScript中的global对象,window对象以及document对象的区别和联系 一.概念区分:JavaScript中的global对象,window对象以及document对象 1.g ...
随机推荐
- sikuli类、函数使用参考java doc
sikuli类.函数使用可以参考java dochttp://doc.sikuli.org/javadoc/ http://stackoverflow.com/questions/9568612/s ...
- C语言读取文件大量数据到数组
针对.txt文档的大量有规律数据,譬如100行8列的数据将其读取到二维数组(矩阵)中,留作之后的数据处理. 改程序通过宏定义的方法来确定将要读取程序的行数和列数,将数据读取到二维数组data[100] ...
- ProjectRuler 算法练习之 位数组成字符串同样的整数
Problem :It can be seen that the number, 125874, and its double, 251748, contain exactly the same di ...
- Maven—Windows操作系统中安装配置Maven环境
今天难得的周末,借此难的机会总结一下关于maven的一些操作: 1.在安装maven之前要确认计算机已经安装并配置了JDK. 2.下载maven: maven-3.0.3:http://downloa ...
- Linux Shell Scripting Cookbook 读书笔记 3
patch, tree, head ,tail 1. 创建不可修改文件 chattr +i file chattr -i file 移除不可修改属性 2. 能够启动闪存或硬盘的混合ISO isohyb ...
- 29. Divide Two Integers[M]两数相除
题目 Given two integers dividend and divisor, divide two integers without using multiplication, divisi ...
- Python笔记(十)——操作SQLServer
#encoding=utf-8 # 先通过如下命令安装模块 # pip install --trusted-host pypi.python.org pymssql # pip类似于RedHat里的y ...
- Nginx 404 500
Nginx反向代理自定义404错误页面 http中添加 proxy_intercept_errors on; server中添加 error_page 404 = https://www.longda ...
- Unity3d 刚体
using UnityEngine; using System.Collections; public class rigidbody_ : MonoBehaviour { private Rigid ...
- java8 Stream 笔记
stream的定义:对一个源中的一系列元素进行聚合操作. 一系列元素:stream对一组有特定类型的元素提供了一个接口.但是stream并不真正存储元素,元素根据需求被计算出来. 源:stream可以 ...