firefo xml 读写实现js代码
firefo xml 读写实现js代码
发布时间:2016-12-30 来源:查字典编辑
摘要:一读xml文件到字符串第一步:将xml文件,转化为DOM结构1varxmlDoc=document.implementation.creat...

一 读xml文件到字符串

第一步:将xml文件,转化为DOM结构

1

var xmlDoc = document.implementation.createDocument("", "test", null);

xmlDoc.load("d:developbookmarks.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:developmyxmlfile.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教程学习
热门Javascript教程学习
编程开发子分类