firefox中读写xml文件

本文介绍如何使用JavaScript处理XML文件,包括将XML文件转换为DOM结构并读取其内容到字符串,以及如何将字符串形式的XML内容写回文件。此外,还提供了创建DOM结构并进行格式化的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

资料参考:http://developer.mozilla.org/en/Parsing_and_serializing_XML

一 读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头,千万别忘了啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值