如何使用JavaScript读取本地XML文件?

3
也许问题在于我错误地编写了文件路径,我正在使用Linux,我需要以不同的方式编写路径吗?
<script type="text/javascript">
  function func(){
    var xmlFile = new XMLHttpRequest();
    xmlFile.open("GET", "/home/kat/course/data.xml", false);
    xmlFile.send();
    xmlDoc = xmlFile.responseXML;

    document.getElementById("result_field").value = xmlDoc;
  }
</script>

您是否使用本地服务器?(例如,localhost127.0.0.1?) - Hatchet
你能给我们展示一下错误信息吗? - Lewis
@Tresdin,没有错误信息,只是它没有将data.xml中的信息添加到id为“result_field”的HTML元素中。 - Kateryna Hurenko
@KaterynaHurenko 请确保 result_field 标签是输入框或文本框,否则您将无法看到结果。 - Lewis
您需要使用文件输入来手动选择文件,并使用文件API读取本地文件(如果它不可用于Web服务器)。Web服务器运行在哪里?/kat - epascarello
显示剩余2条评论
3个回答

0
文件需要在Web根目录中。 因此,如果您的代码位于/var/www中,而您的站点是“somedomain.com/index.html”,则需要将xml文件放在相同的/var/www目录中,并像“GET”、“somedomain.com/anotherfolder/data.xml”一样访问它... 您无法从JS访问服务器目录... JavaScript在客户端运行,而不是在服务器端运行,因此文件需要在网站上可访问。

谢谢你的回答。如果我使用本地服务器,我的路径应该是什么样子? - Kateryna Hurenko
路径也可以是相对路径,唯一需要注意的是文件需要在Web服务器上访问。如果您在一个文件夹中有index.html,请将data.xml放在同一个文件夹中,并使用"/data.xml"进行获取。请记住,如果您没有将index.html文件打开为HTTP(例如,如果您像"C:\ something \ index.html"那样打开它),则无法工作。 - lucian.nicolaescu

0
可能有两个问题。URL 必须是 {your_server_domain}/home/kat/course/data.xml,而且document.getElementById("result_field")必须是一个输入/文本区域以接受值的归属,否则请使用innerHTML
P.s.: 本地服务器域通常是:localhost或者127.0.0.1:80

在“XMLHttpRequest”中,URL实际上可以相对于调用它的文件。 - Hatchet

0

JavaScript 只能访问服务器正在提供的文件。除非您正在提供 /home/kat/course/data.xml,否则您需要在 JavaScript 可以访问它之前移动 data.xml。一旦将其移动到正在提供的位置,它将通过 XHR 可访问。

顺便说一下,XHR 的 responseXML 属性是一个 Document 对象,而不是字符串。请参见:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接