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 相关文章推荐
新手入门常用代码集锦
Jan 11 Javascript
javascript AutoScroller 函数类
May 29 Javascript
JavaScript计算字符串中每个字符出现次数的小例子
Jul 02 Javascript
JavaScript制作简易的微信打飞机
Mar 31 Javascript
JS模拟bootstrap下拉菜单效果实例
Jun 17 Javascript
jQuery焦点图轮播效果实现方法
Dec 19 Javascript
详解vue+vueRouter+webpack的简单实例
Jun 17 Javascript
简单谈谈axios中的get,post方法
Jun 25 Javascript
浅谈Vue 初始化性能优化
Aug 31 Javascript
H5实现仿flash效果的实现代码
Sep 29 Javascript
原生javascript中this几种常见用法总结
Feb 24 Javascript
详解用js代码触发dom事件的实现方案
Jun 10 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 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
php中this关键字用法分析
2016/12/07 PHP
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
在Python中编写数据库模块的教程
2015/04/29 Python
python学生管理系统代码实现
2020/04/05 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
大学生求职简历的自我评价
2013/10/21 职场文书
运动会广播稿30字
2014/01/21 职场文书
创业计划书模版
2014/02/05 职场文书
计算机实训报告范文
2014/11/05 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书
司机岗位职责范本
2015/04/10 职场文书
警告通知
2015/04/25 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书