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 相关文章推荐
根据分辩率调用不同的CSS.
Jan 08 Javascript
jQuery 树形结构的选择器
Feb 15 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
Jun 20 Javascript
UI Events 用户界面事件
Jun 27 Javascript
angularjs中的e2e测试实例
Dec 06 Javascript
轻量级javascript 框架Backbone使用指南
Jul 24 Javascript
javascript+html5实现绘制圆环的方法
Jul 28 Javascript
基于jQuery实现二级下拉菜单效果
Feb 01 Javascript
JavaScript必知必会(五) eval 的使用
Jun 08 Javascript
JavaScript判断数组是否存在key的简单实例
Aug 03 Javascript
JavaScript笛卡尔积超简单实现算法示例
Jul 30 Javascript
微信小程序如何实现精确的日期时间选择器
Jan 21 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 ci框架验证码实例分析
2013/06/26 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
Yii2如何批量添加数据
2016/05/17 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
Python中的条件判断语句与循环语句用法小结
2016/03/21 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
pandas带有重复索引操作方法
2018/06/08 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
python实现websocket的客户端压力测试
2019/06/25 Python
Pytorch Tensor基本数学运算详解
2019/12/30 Python
python代码如何注释
2020/06/01 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android