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 new后的constructor属性
Aug 05 Javascript
触屏中的JavaScript事件分析
Feb 06 Javascript
js类式继承与原型式继承详解
Apr 07 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
May 13 Javascript
three.js快速入门【推荐】
Jan 21 Javascript
jQuery.Form上传文件操作
Feb 05 Javascript
详解vue-cli开发环境跨域问题解决方案
Jun 06 Javascript
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
Aug 14 Javascript
Angular2+如何去除url中的#号详解
Dec 20 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
Dec 18 Javascript
Vue v-model组件封装(类似弹窗组件)
Jan 08 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
Oct 16 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
JS检测浏览器开发者工具是否打开的方法详解
2020/10/02 Javascript
python list中append()与extend()用法分享
2013/03/24 Python
Python实现的二维码生成小软件
2014/07/11 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
写出一个方法实现冒泡排序
2016/07/08 面试题
求职自荐书范文
2013/12/04 职场文书
最热门的自我评价
2013/12/30 职场文书
小学教师节活动方案
2014/01/31 职场文书
新闻编辑自荐书范文
2014/02/12 职场文书
技校毕业生自荐信
2014/06/03 职场文书
代理人委托书
2014/09/16 职场文书
检讨书范文1000字
2015/01/28 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
php引用传递
2021/04/01 PHP