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

标签 javascript html xml xml-parsing

我正在尝试创建一些具有严重 XML 编辑依赖性的东西,并且我有一些关于如何去做某些事情的问题。

我所知道的:

  • HTML 编辑

  • XML 方法编辑与 HTML(本身就是 XML 的一种类型)共享大多数方法

  • 如何加载 XML 文档并对其进行导航

我的问题:

  • 如何保存用 javascript 编辑的 XML 文档,还是自动保存

  • 如何使用 JavaScript 创建空白 XML 文件

最佳答案

不幸的是,您可能无法做您想做的事。 JavaScript/ECMAScript 无法在没有任何直接交互的情况下直接写入文件(至少不能写入典型文件系统中的文件,如“我的文档”或“桌面”文件夹)。

首先,您可以将 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 数据,然后请求用户下载它。此方法不会让您定义希望用户保存数据的位置,它只是呈现典型的“文件另存为...”对话框,供用户指定保存数据的位置。

要创建“空白”xml 文件...您不能。它必须至少包含开始和结束标记,否则浏览器将返回包含 html、head 和 body 标记的基本格式的 HTML DOM。再次强调,仅适用于 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();

关于javascript - 在 JS 中创建、编辑和保存 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28117402/

相关文章:

java - 将 .mat 文件转换为 XML —— 需要添加 java 类?

javascript - 无法读取 For 循环中未定义的属性 'length' (jQuery)

javascript - 带有无限轮播的 Internet Explorer 7+8 jQuery 错误

javascript - Google Calendar API - 不再授权读取?

php - 在 while 循环内获取连接表的图像集

php - 为 <code></code> 中的代码着色

javascript - 无法使用 javascript 解析 xml DOM(从文件)

java - 从 XML 扩充可绘制对象

javascript - 纬度经度格式错误 DDDMM.MMMM 2832.3396N

html - 页眉大小问题