我遇到的问题是通过Web浏览器创建XML文件并能够从中读取/写入。 多个浏览器都存在这方面的问题,我似乎无法找到有效的解决方案。
我正在创建一个在字段中显示XML数据的CMS。然后我想读取这些输入元素的值,然后使用Javascript或JQuery覆盖XML文件。
XML文件将存储在Web服务器上,客户端PC将通过服务器上的网页访问CMS,然后读取/写入XML。
下面的代码让您了解IM尝试做什么:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var FILENAME ="xml.xml"; //<---- In Current Directory on Web server.
var file = fso.CreateTextFile(FILENAME, true);
file.WriteLine('<?xml version="1.0" encoding="utf-8"?>\n');
file.WriteLine('<Seating_Plan>\n');
var table = document.getElementById("table_assoc");
var rCount = table.rows.length;
for (var i = 1; i < rCount; i++) {
var id = table.rows[i].cells[0].children[0].value;
var deptcode = table.rows[i].cells[1].children[0].value;
var name = table.rows[i].cells[2].children[0].value;
var role = table.rows[i].cells[3].children[0].value;
var desc = table.rows[i].cells[4].children[0].value;
var image = table.rows[i].cells[5].children[0].value;
var asdir = table.rows[i].cells[6].children[0].value;
file.WriteLine('<Person id="' + id + '"><Dept>' + deptcode + '</Dept><Name>' + name + '</Name><Description>' + desc + '</Description><Role>' + role + '</Role><Image><image href="' + image + '"/></Image><AssociateDir><AssociateDir href="' + asdir + '"/></AssociateDir></Person>');
}
file.WriteLine('</Seating_Plan>');
file.Close();
}
然而,仅在访问本地系统而非服务器上的网页时才有效。通过:&#34; file:// C:......&#34;而不是:
http://localhost/admin.html
最好的方法是什么?
任何帮助将不胜感激。 非常感谢! AJ
答案 0 :(得分:0)
我怀疑你在这里误解了一些东西:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var FILENAME ="xml.xml"; //<---- In Current Directory on Web server.
网络浏览器无法访问服务器的文件系统。该ActiveX对象可能允许在当前主机上进行文件系统访问,但它不会在其他主机上允许它。如果没有错误并且浏览器允许ActiveX对象与本地文件系统交互,那么我敢打赌它在本地文件系统上成功创建文件。 (在任何恰好是浏览器进程的当前工作目录的情况下,因为没有指定目录。)
要与服务器文件系统上的文件进行交互,您需要使用服务器端代码。