使用Javascript创建XML文件

22 浏览
0 Comments

使用Javascript创建XML文件

我有以下代码:

xmlDoc=loadXMLDoc("dbbackup.xml");
x=xmlDoc.getElementsByTagName("record");
alert(x);
for (i=0;i<3;i++) {
  newel=xmlDoc.createElement("edition");
  newtext=xmlDoc.createTextNode("first");
  alert("x  : "+x[i]);
  alert("newtext :"+newtext.nodevalue);
  x[i].appendChild(newel);
  alert("sd");
}
function loadXMLDoc(dname) {
  if (window.XMLHttpRequest) {
    xhttp=new XMLHttpRequest();
  } else {
    xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xhttp.open("GET",dname,false);
  xhttp.send();
  return xhttp.responseXML;
}

我在同一位置创建了dbbackup.xml,XML文件如下:


  

但在运行脚本后,xml文件没有得到更新。

0
0 Comments

问题的原因是JavaScript的设计初衷是只能在内存中修改加载在浏览器框架内的文件。浏览器可以被看作是一个沙盒,你的网页(html、xml等)可以在其中运行。只要xml在沙盒中运行,一切都很好。但是如果允许xml在沙盒之外运行,想想网站可能对你的机器造成的破坏吧。

JavaScript无法单独永久地影响本地机器上的文件。它只能在沙盒中运行(在本地,它可以调用Java或其他API来影响变化,但这是完全另一回事)。JavaScript只能在客户端运行。如果你希望它影响服务器,它只能通过回调服务器来实现。在服务器上,你需要一些编程语言(如asp.net、java、php、html等)来接收并处理这个请求。

JavaScript本身非常强大,但只能在沙盒内(浏览器)执行。要让它影响浏览器之外的任何东西,它必须依赖于已经就位并准备好接收这些请求的其他程序。

而这一切都是出于安全考虑。

0
0 Comments

创建一个使用JavaScript创建XML文件的问题的出现原因是,作者想在客户端创建XML文件并在日常实践中使用。解决方法是使用JavaScript编写代码来创建XML文件,然后将其发送到服务器。

下面是解决方法的详细说明:

首先,作者定义了一个名为makeSlot的函数。在函数内部,作者使用XMLHttpRequest对象创建了一个XMLHttpRequest实例,并设置了onreadystatechange事件处理程序。当readyState为4且status为200时,调用showBon函数。然后,作者打开一个POST请求,将wrapUp函数的返回值发送给服务器。

wrapUp函数是用来构建最终的XML文件的。首先,它使用document.implementation.createDocument方法创建一个空的XML文档对象。然后,它创建一个名为operator的元素,并将从id为"rText"的元素中获取的文本值创建为一个文本节点,并将其附加到operator元素中。接下来,它创建一个名为transaction的根元素,并设置一些属性。根据某些条件,它可能会设置其他属性。然后,它将operator元素附加到根元素中。

接下来,作者获取所有的div元素,并使用for循环遍历它们。根据div元素的column属性的值,作者创建一个名为row的元素,并设置一些属性。根据不同的column值,作者可能会设置不同的属性。然后,作者将row元素附加到根元素中。

最后,作者将根元素附加到transaction文档中,并返回该文档。

通过调用makeSlot函数,可以使用JavaScript创建XML文件并将其发送到服务器。

以上是创建一个使用JavaScript创建XML文件的问题的出现原因以及解决方法的详细说明。

0
0 Comments

无法使用Javascript直接在客户端的web浏览器中修改磁盘上的文件。要实际上在服务器上读写文件,必须使用服务器端语言和技术,如PHP或ASP。

没有其他方法可以在不使用服务器端脚本的情况下使用Javascript创建xml文件。

仅就SomekidwithHTML的评论提到的AJAX而言,您可以使用Javascript创建XML,然后使用类似jQuery的AJAX将此信息POST回控制器方法。然后,您可以使用控制器将其保存到磁盘/数据库/其他位置。我来自MVC.NET背景(示例实现请参见stackoverflow.com/a/8517361/201648),但在大多数Web语言/框架中实现此相同模式应该是可能的。我认为我应该稍微详细解释一下这一点,因为这是一个相当常见的模式。

稍微离题一下,如果您喜欢使用JavaScript,还有一些服务器端的JavaScript实现,例如node.js可能会对您有兴趣(请参见nodejs.org)。

0