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 相关文章推荐
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
Nov 03 Javascript
document.onreadystatechange事件的用法分析
Oct 17 Javascript
javascript 模拟点击广告
Jan 02 Javascript
Javascript中Eval函数的使用
Mar 23 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
Jun 19 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
Aug 03 Javascript
浅谈JS原型对象和原型链
Mar 02 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
May 20 Javascript
BootStrap3中模态对话框的使用
Jan 06 Javascript
bootstrap 通过加减按钮实现输入框组功能
Nov 15 Javascript
浅谈React Native 传参的几种方式(小结)
May 21 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
Jan 26 Javascript
犀利的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
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
基于python实现检索标记敏感词并输出
2020/05/07 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
RealTek面试题
2016/06/28 面试题
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
广告学专业推荐信范文
2013/11/23 职场文书
办公室内勤岗位职责范本
2013/12/09 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android