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 相关文章推荐
mouse_on_title.js
Aug 25 Javascript
图片上传即时显示缩略图的js代码
May 27 Javascript
Javascript中call的两种用法实例
Dec 13 Javascript
jquery实现鼠标滑过小图时显示大图的方法
Jan 14 Javascript
JavaScript实现复制文章自动添加版权
Aug 02 Javascript
AngularJs Managing Service Dependencies详解
Sep 02 Javascript
nuxt+axios解决前后端分离SSR的示例代码
Oct 24 Javascript
layui 优化button按钮和弹出框的方法
Aug 15 Javascript
浅谈JavaScript 代码简洁之道
Jan 09 Javascript
小程序实现锚点滑动效果
Sep 23 Javascript
在pycharm中开发vue的方法步骤
Mar 04 Javascript
jQuery实现容器间的元素拖拽功能
Dec 01 jQuery
犀利的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入门教程之表单与验证实例详解
2016/09/11 PHP
海量经典的jQuery插件集合
2010/01/12 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
js实现textarea限制输入字数
2017/02/13 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
Python发送email的3种方法
2015/04/28 Python
python实现矩阵乘法的方法
2015/06/28 Python
django输出html内容的实例
2018/05/27 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
工厂厂长的职责
2013/12/12 职场文书
教师对学生的寄语
2014/04/03 职场文书
超市理货员岗位职责
2014/07/04 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
检讨书模板大全
2015/05/07 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
简单谈谈Python面向对象的相关知识
2021/06/28 Python