firefo xml 读写实现js代码


Posted in Javascript onJune 11, 2009

一 读xml文件到字符串
第一步:将xml文件,转化为DOM结构
1
var xmlDoc = document.implementation.createDocument("", "test", null);
xmlDoc.load("d:\\develop\\bookmarks.xml");
2
var req = new XMLHttpRequest();
req.open("GET", "chrome://passwdmaker/content/people.xml", false);
req.send(null);
var dom = req.responseXML;
dom就是DOM结构对象
第二步:将DOM结构转化为xml字符串
var serializer = Components.classes["@mozilla.org/xmlextras/xmlserializer;1"].createInstance(Components.interfaces.nsIDOMSerializer);
var str = serializer.serializeToString(dom);
str就是xml内容的字符串
二 将xml字符串写成xml文件
// str为xml字符串
var parser = new DOMParser();
var dom = parser.parseFromString(str, "text/xml");
var serializer = Components.classes["@mozilla.org/xmlextras/xmlserializer;1"].createInstance(Components.interfaces.nsIDOMSerializer);
var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("d:\\develop\\myxmlfile.xml");// 保持的位置
foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0); // write, create, truncate
serializer.serializeToStream(dom.documentElement, foStream, ""); // rememeber, dom is the DOM tree
foStream.close();
附件:
1 创建DOM结构
// 生成document对象
var xmldoc = document.implementation.createDocument("","",null);
// 创建xml文件的头
// <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
var head = xmldoc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"");
xmldoc.appendChild(head);
// 创建ROOT节点
var nodest = xmldoc.createElement("nodeset");
xmldoc.appendChild(nodest);
// 创建子节点
var elem1 = doc.createElement("name");
elem1.textContent = "张三";
nodest.appendChild(elem1);
var elem2 = doc.createElement("name");
elem2.textContent = "李四";
nodest.appendChild(elem2);
// 创建的结果如下
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><nodeset><name>张三</name><name>李四</name></nodeset>
这样生成的xmlDOM结构通过系列化转化为xml字符串时不会自动缩进,但通过XML对象解析下就可以了。
var serializer = Components.classes["@mozilla.org/xmlextras/xmlserializer;1"].createInstance(Components.interfaces.nsIDOMSerializer);
// 解析DOMxml结构到xml字符串
// 要XML对象解析成功必须将xml头去掉
// 去掉xml头
var xmlDeclaration = /^<\?xml version[^>]+?>/;
var str = new XML( serializer.serializeToString(xmldoc).replace(xmlDeclaration, '') ).toXMLString();
哈哈,现在的str就是能够自动缩进的xml字符串了。不过要是你的xml要编码成功还得在str前面加上xml头,千万别忘了啊。

Javascript 相关文章推荐
{}与function(){}选用空对象{}来存放keyValue
May 23 Javascript
JS动态添加Table的TR,TD实现方法
Jan 28 Javascript
如何使用jquery修改css中带有!important的样式属性
Apr 28 Javascript
JS实现页面进入和返回定位到具体位置
Dec 08 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
Nov 15 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
Mar 17 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
Feb 28 Javascript
学习RxJS之JavaScript框架Cycle.js
Jun 17 Javascript
浅谈layer弹出层按钮颜色修改方法
Sep 11 Javascript
JavaScript实现拖拽盒子效果
Feb 06 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
Jul 14 jQuery
Vue实现圆环进度条的示例
Feb 06 Vue.js
犀利的js 函数集合
Jun 11 #Javascript
js 操作css实现代码
Jun 11 #Javascript
图片连续滚动代码[兼容IE/firefox]
Jun 11 #Javascript
Javascript Tab 导航插件 (23个)
Jun 11 #Javascript
javascript 树控件 比较好用
Jun 11 #Javascript
javascript 禁止复制网页
Jun 11 #Javascript
JavaScript 动态改变图片大小
Jun 11 #Javascript
You might like
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
JS实现加载和读取XML文件的方法详解
2017/04/24 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
python实现数通设备端口监控示例
2014/04/02 Python
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
python表格存取的方法
2018/03/07 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
python解析含有重复key的json方法
2019/01/22 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
python脚本第一行如何写
2020/08/30 Python
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
院领导写的就业推荐信
2014/03/09 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript