如何创build和下载使用JavaScript飞行的XML文件?

我有一个要求如下:

网页上有一个链接。 当用户点击链接时,它应该立即创build一个文件,并popup一个下载框。 如何使用java脚本来做到这一点?

如果用户信任你,你可以直接在他的文件系统中创buildXML文件。 Mozilla Firefox的示例代码:

function mozillaSaveFile(filePath,content) { if(window.Components) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(filePath); if(!file.exists()) file.create(0,0664); var out = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); out.init(file,0x20|0x02,00004,null); out.write(content,content.length); out.flush(); out.close(); return true; } catch(ex) { return false; } } return null; } 

如果您需要支持所有浏览器,请参阅http://www.tiddlywiki.com中的实现方式

编辑:这不适用于Firefox 17 +,因为更改权限被认为是不安全的,并删除。 详情请看这里: https : //bugzilla.mozilla.org/show_bug.cgi?id=546848#c57

尝试一下安德烈亚斯所说的我会补充一些东西:

脚本:

 function createAndOpenFile(){ var stupidExample = '<?xml version="1.0" encoding="utf-8"?><aTag>something</aTag>'; document.open('data:Application/octet-stream,' + encodeURIComponent(stupidExample)); } 

你有一个这样的链接,请注意新的下载属性 ,用它把你的文件名。

 <a href="#" onclick="createAndOpenFile()" download="file.xml">Donwload</a> 

它至less在Chrome 27和Firefox 21中起作用。

改进,欢迎:-)

您可以使用此示例中显示的blob http://html5-demos.appspot.com/static/a.download.html

您可以使用下面的代码具有一个javacript函数

 var xmltext = "<sometag><someothertag></someothertag></sometag>"; var pom = document.createElement('a'); var filename = "file.xml"; var pom = document.createElement('a'); var bb = new Blob([xmltext], {type: 'text/plain'}); pom.setAttribute('href', window.URL.createObjectURL(bb)); pom.setAttribute('download', filename); pom.dataset.downloadurl = ['text/plain', pom.download, pom.href].join(':'); pom.draggable = true; pom.classList.add('dragout'); pom.click(); 

你可以创build一个数据URI。 大多数现代浏览器应该能够理解它。 请参阅http://en.wikipedia.org/wiki/Data_URI_scheme