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实现双向链表互联网机顶盒实战应用实现
Oct 28 Javascript
jQuery图片滚动图片的效果(另类实现)
Jun 02 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
Aug 12 Javascript
JS实现仿QQ聊天窗口抖动特效
May 10 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
Jun 19 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
Jun 26 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
Dec 24 Javascript
jQuery加密密码到cookie的实现代码
Apr 18 jQuery
深入理解react-router 路由的实现原理
Sep 26 Javascript
layui实现下拉框三级联动
Jul 26 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
Nov 13 Javascript
node.js中 redis 的安装和基本操作示例
Feb 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将数据导入到Foxmail的实现代码
2010/09/05 PHP
基于PHP常用函数的用法详解
2013/05/10 PHP
深入PHP变量存储的详解
2013/06/13 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
Javascript Select操作大集合
2009/05/26 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
jquery乱码与contentType属性设置问题解决方案
2013/01/07 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
python中from module import * 的一个坑
2014/07/20 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
简单了解Django项目应用创建过程
2020/07/06 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
文明之星事迹材料
2014/05/09 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
融资合作协议书范本
2014/10/17 职场文书
2014年小学工作总结
2014/11/26 职场文书
导游带团欢迎词
2015/09/30 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers
python区块链持久化和命令行接口实现简版
2022/05/25 Python