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 相关文章推荐
Javascript基础教程之break和continue语句
Jan 18 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
Jun 09 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
Aug 06 Javascript
使用Javascript实现选择下拉菜单互移并排序
Feb 23 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
Jul 07 Javascript
js微信支付实现代码
Dec 22 Javascript
详解Vue 非父子组件通信方法(非Vuex)
May 24 Javascript
angularjs 获取默认选中的单选按钮的value方法
Feb 28 Javascript
JS回调函数简单易懂的入门实例分析
Sep 29 Javascript
如何编写一个 Webpack Loader的实现
Oct 18 Javascript
vue.js+element 默认提示中英文操作
Nov 11 Javascript
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
Jun 29 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中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
PHP管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
php die()与exit()的区别实例详解
2016/12/03 PHP
php实现session共享的实例方法
2019/09/19 PHP
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
jQuery实现简单的点赞效果
2020/05/29 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
Python入门篇之数字
2014/10/20 Python
Python3读取zip文件信息的方法
2015/05/22 Python
Python中super函数的用法
2017/11/17 Python
分分钟入门python语言
2018/03/20 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
python占位符输入方式实例
2019/05/27 Python
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
Linux中如何用命令创建目录
2016/12/02 面试题
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
微型企业创业投资计划书
2014/01/10 职场文书
安全检查验收制度
2014/01/12 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
项目经理聘任书
2014/03/29 职场文书
工伤赔偿协议书
2014/04/15 职场文书