JS中的XML创建,编辑和保存

时间:2015-01-23 19:35:01

标签: javascript html xml xml-parsing

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

我所知道的:

  • HTML编辑

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

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

我的问题:

  • 如何保存在javascript中编辑的XML文档或自动执行此操作

  • 如何使用javascript

  • 创建空白XML文件

1 个答案:

答案 0 :(得分:2)

不幸的是,你可能无法做你想做的事。 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访问应用程序(存储在浏览器确定的位置,您无法定义& #34; C:\ User \ MyUser \ Desktop \ myfile.xml"作为位置)。

  2. 另存为Blob数据,然后请求用户下载。此方法不允许您定义用户保存它的位置,它只显示典型的"将文件另存为..."用户可以指定保存数据的位置的对话框。

  3. 用于创建"空白" xml文件......你不能。它必须至少包含开始和结束标签,浏览器将返回一个基本格式的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();