XML 在 JS 中创建、编辑和保存
XML Creating, Editing and Saving in JS
我正在尝试创建具有大量 XML 编辑依赖性的内容,但我有几个关于我将如何做某些事情的问题。
我知道的:
HTML编辑
XML 方法编辑与 HTML 共享大部分方法(这是 XML 本身的一种类型)
如何加载 XML 文档并进行导航
我的问题:
如何保存在 javascript 中编辑过的 XML 文档,还是自动保存
如何使用 javascript
创建空白 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 个选项(无需使用一些额外的插件,甚至那些可能有很多限制):
将数据保存到沙盒文件中,只有在用户允许使用localStorage后,使用localStorage的应用程序才能访问(存储在浏览器确定的位置,你不能将 "C:\User\MyUser\Desktop\myfile.xml" 定义为位置)。
保存为 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();
我正在尝试创建具有大量 XML 编辑依赖性的内容,但我有几个关于我将如何做某些事情的问题。
我知道的:
HTML编辑
XML 方法编辑与 HTML 共享大部分方法(这是 XML 本身的一种类型)
如何加载 XML 文档并进行导航
我的问题:
如何保存在 javascript 中编辑过的 XML 文档,还是自动保存
如何使用 javascript
创建空白 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 个选项(无需使用一些额外的插件,甚至那些可能有很多限制):
将数据保存到沙盒文件中,只有在用户允许使用localStorage后,使用localStorage的应用程序才能访问(存储在浏览器确定的位置,你不能将 "C:\User\MyUser\Desktop\myfile.xml" 定义为位置)。
保存为 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();