XML 在 JS 中创建、编辑和保存

XML Creating, Editing and Saving in JS

我正在尝试创建具有大量 XML 编辑依赖性的内容,但我有几个关于我将如何做某些事情的问题。

我知道的:

我的问题:

很遗憾,您可能无法做您想做的事。 JavaScript/ECMAScript 不能在没有任何直接交互的情况下直接写入文件(至少不能写入典型文件系统中的文件,如 "My Documents" 或 "Desktop" 文件夹)。

首先,您可以将 XML/HTML DOM 保存为这样的字符串(仅适用于大多数浏览器的更高版本和 IE 9+):

if(typeof window.XMLSerializer == "undefined") {
    throw new Error("No modern XML serializer found.");
}
var s = new XMLSerializer();
var xmlString = s.serializeToString( xmlDomVar );

在那之后,就保存数据而言,您只有 2 个选项(无需使用一些额外的插件,甚至那些可能有很多限制):

  1. 将数据保存到沙盒文件中,只有在用户允许使用localStorage后,使用localStorage的应用程序才能访问(存储在浏览器确定的位置,你不能将 "C:\User\MyUser\Desktop\myfile.xml" 定义为位置)。

  2. 保存为 Blob 数据然后请求用户下载它。此方法不会让您定义希望用户保存数据的位置,它只是显示典型的 "Save File As..." 对话框供用户指定保存数据的位置。

    • 这里有很好的例子:Is it possible to write data to file using only JavaScript?

对于创建 "blank" xml 文件...你不能。它必须至少包含开始和结束标签,否则浏览器将 return 基本格式的 HTML DOM 包含 html、head 和 body 标签。再次声明,仅适用于 IE9+ 和大多数其他现代浏览器:

if (typeof window.DOMParser != "undefined") {
    parseXml = function(xmlStr) {
        return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
    };
} else {
    throw new Error("No modern XML parser found.");
}

// This will create a new XML DOM containing whatever is in the string.
var newXmlDom = parseXml( '<xml></xml>' );

// This will create a basic HTML structure if you do not provide any valid XML.
var newHtmlDom = parseXml();