firefo xml 讀寫實(shí)現(xiàn)js代碼
更新時(shí)間:2009年06月11日 22:48:57 作者:
firefo xml 讀寫實(shí)現(xiàn) 不過要是你的xml要編碼成功還得在str前面加上xml頭,千萬別忘了啊。
一 讀xml文件到字符串
第一步:將xml文件,轉(zhuǎn)化為DOM結(jié)構(gòu)
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結(jié)構(gòu)對(duì)象
第二步:將DOM結(jié)構(gòu)轉(zhuǎn)化為xml字符串
var serializer = Components.classes["@mozilla.org/xmlextras/xmlserializer;1"].createInstance(Components.interfaces.nsIDOMSerializer);
var str = serializer.serializeToString(dom);
str就是xml內(nèi)容的字符串
二 將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 創(chuàng)建DOM結(jié)構(gòu)
// 生成document對(duì)象
var xmldoc = document.implementation.createDocument("","",null);
// 創(chuàng)建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);
// 創(chuàng)建ROOT節(jié)點(diǎn)
var nodest = xmldoc.createElement("nodeset");
xmldoc.appendChild(nodest);
// 創(chuàng)建子節(jié)點(diǎn)
var elem1 = doc.createElement("name");
elem1.textContent = "張三";
nodest.appendChild(elem1);
var elem2 = doc.createElement("name");
elem2.textContent = "李四";
nodest.appendChild(elem2);
// 創(chuàng)建的結(jié)果如下
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><nodeset><name>張三</name><name>李四</name></nodeset>
這樣生成的xmlDOM結(jié)構(gòu)通過系列化轉(zhuǎn)化為xml字符串時(shí)不會(huì)自動(dòng)縮進(jìn),但通過XML對(duì)象解析下就可以了。
var serializer = Components.classes["@mozilla.org/xmlextras/xmlserializer;1"].createInstance(Components.interfaces.nsIDOMSerializer);
// 解析DOMxml結(jié)構(gòu)到xml字符串
// 要XML對(duì)象解析成功必須將xml頭去掉
// 去掉xml頭
var xmlDeclaration = /^<\?xml version[^>]+?>/;
var str = new XML( serializer.serializeToString(xmldoc).replace(xmlDeclaration, '') ).toXMLString();
哈哈,現(xiàn)在的str就是能夠自動(dòng)縮進(jìn)的xml字符串了。不過要是你的xml要編碼成功還得在str前面加上xml頭,千萬別忘了啊。
第一步:將xml文件,轉(zhuǎn)化為DOM結(jié)構(gòu)
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結(jié)構(gòu)對(duì)象
第二步:將DOM結(jié)構(gòu)轉(zhuǎn)化為xml字符串
var serializer = Components.classes["@mozilla.org/xmlextras/xmlserializer;1"].createInstance(Components.interfaces.nsIDOMSerializer);
var str = serializer.serializeToString(dom);
str就是xml內(nèi)容的字符串
二 將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 創(chuàng)建DOM結(jié)構(gòu)
// 生成document對(duì)象
var xmldoc = document.implementation.createDocument("","",null);
// 創(chuàng)建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);
// 創(chuàng)建ROOT節(jié)點(diǎn)
var nodest = xmldoc.createElement("nodeset");
xmldoc.appendChild(nodest);
// 創(chuàng)建子節(jié)點(diǎn)
var elem1 = doc.createElement("name");
elem1.textContent = "張三";
nodest.appendChild(elem1);
var elem2 = doc.createElement("name");
elem2.textContent = "李四";
nodest.appendChild(elem2);
// 創(chuàng)建的結(jié)果如下
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><nodeset><name>張三</name><name>李四</name></nodeset>
這樣生成的xmlDOM結(jié)構(gòu)通過系列化轉(zhuǎn)化為xml字符串時(shí)不會(huì)自動(dòng)縮進(jìn),但通過XML對(duì)象解析下就可以了。
var serializer = Components.classes["@mozilla.org/xmlextras/xmlserializer;1"].createInstance(Components.interfaces.nsIDOMSerializer);
// 解析DOMxml結(jié)構(gòu)到xml字符串
// 要XML對(duì)象解析成功必須將xml頭去掉
// 去掉xml頭
var xmlDeclaration = /^<\?xml version[^>]+?>/;
var str = new XML( serializer.serializeToString(xmldoc).replace(xmlDeclaration, '') ).toXMLString();
哈哈,現(xiàn)在的str就是能夠自動(dòng)縮進(jìn)的xml字符串了。不過要是你的xml要編碼成功還得在str前面加上xml頭,千萬別忘了啊。
相關(guān)文章
JavaScript實(shí)現(xiàn)瀏覽器網(wǎng)頁自動(dòng)滾動(dòng)并點(diǎn)擊的示例代碼
這篇文章主要介紹了JavaScript實(shí)現(xiàn)瀏覽器網(wǎng)頁的自動(dòng)滾動(dòng)并點(diǎn)擊的示例代碼,幫助大家更好的理解和學(xué)習(xí)JavaScript的使用,感興趣的朋友可以了解下2020-12-12JS中數(shù)據(jù)類型的正確判斷方法實(shí)例
怎么去判斷一個(gè)數(shù)據(jù)屬于哪個(gè)數(shù)據(jù)類型,這個(gè)是很常見的操作,我們一般都會(huì)想到typeof和instanceof這兩個(gè)常見的方法,但有時(shí)候這兩種方法并不能滿足我們的需求,下面這篇文章主要給大家介紹了關(guān)于JS中數(shù)據(jù)類型的正確判斷方法,需要的朋友可以參考下2021-08-08JSON與XML的區(qū)別對(duì)比及案例應(yīng)用
這篇文章主要介紹了JSON與XML的區(qū)別對(duì)比及案例應(yīng)用的講解。本文涉及到XML和JSON優(yōu)缺點(diǎn)講解及對(duì)比,非常不錯(cuò),具有一定的參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-11-11淺析JavaScript中的變量復(fù)制、參數(shù)傳遞和作用域鏈
這篇文章主要介紹了淺析JavaScript中的變量復(fù)制、參數(shù)傳遞和作用域鏈 的相關(guān)資料,需要的朋友可以參考下2016-01-01JavaScript實(shí)現(xiàn)JSON合并操作示例【遞歸深度合并】
這篇文章主要介紹了JavaScript實(shí)現(xiàn)JSON合并操作,結(jié)合實(shí)例形式分析了javascript基于遞歸深度實(shí)現(xiàn)json合并操作相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2018-09-0920多個(gè)小事例帶你重溫ES10新特性(小結(jié))
這篇文章主要介紹了20多個(gè)小事例帶你重溫ES10新特性(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09