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 相关文章推荐
入门基础学习 ExtJS笔记(一)
Nov 11 Javascript
js中关于String对象的replace使用详解
May 24 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
Nov 30 Javascript
js判断当前页面在移动设备还是在PC端中打开
Jan 06 Javascript
JS+CSS3实现超炫的散列画廊特效
Jul 16 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
Nov 17 Javascript
jQuery+koa2实现简单的Ajax请求的示例
Mar 06 jQuery
解决vue动态为数据添加新属性遇到的问题
Sep 18 Javascript
vue中使用codemirror的实例详解
Nov 01 Javascript
Vue对象赋值视图不更新问题及解决方法
Jun 03 Javascript
解决layui使用layui-icon出现默认图标的问题
Sep 11 Javascript
layui的数据表格+springmvc实现搜索功能的例子
Sep 28 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源代码安装常见错误与解决办法分享
2013/05/28 PHP
基于php使用memcache存储session的详解
2013/06/25 PHP
yii添删改查实例
2015/11/16 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
python 使用get_argument获取url query参数
2017/04/28 Python
python matplotlib中文显示参数设置解析
2017/12/15 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
python爬取m3u8连接的视频
2018/02/28 Python
selenium+python实现自动登录脚本
2018/04/22 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
python Pandas库基础分析之时间序列的处理详解
2019/07/13 Python
索尼巴西商店:Sony巴西
2019/06/21 全球购物
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
JAVA的事件委托机制和垃圾回收机制
2014/09/07 面试题
法学专业毕业生自荐信范文
2013/12/18 职场文书
自我评价是什么
2014/01/04 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
Spring中的@Transactional的工作原理
2022/06/05 Java/Android