【问题标题】:java/javascript read online XML filejava/javascript读取在线XML文件
【发布时间】:2013-01-14 03:55:34
【问题描述】:

我想从在线 xml 文件中获取数据,例如http://data.one.gov.hk/others/td/speedmap.xml。 当我在本地(没有 servlet)从 HTML 调用 javascript 时,它可以工作。 但是,当我通过 jsp 和 java servlet 调用它时,它不起作用。 有没有其他方法可以从在线xml文件中获取数据?

contentXML.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <p>CONTENT_XML</p>

        <%@ include file="source_file/js_workable.js" %>
        <%@ include file="source_file/data_retrieve.js" %>

    </body>
</html>

data_retrieve.js

<script  LANGUAGE="JavaScript">


         if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
           xmlhttp=new XMLHttpRequest();
         }
         else { // code for IE6, IE5
           xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
         }

         document.write(xmlhttp.status);
         document.write(xmlhttp.readyState);
         document.write(xmlhttp.statusText);

         xmlhttp.open("GET","http://data.one.gov.hk/others/td/speedmap.xml",false);
         xmlhttp.send(); 


         xmlDoc=xmlhttp.responseXML; 

         document.write("<table border='1'>");
         var x=xmlDoc.getElementsByTagName("jtis_speedmap");
         for (i=0;i<x.length;i++){ 
           document.write("<tr><td>");
           document.write(x[i].getElementsByTagName("LINK_ID")[0].childNodes[0].nodeValue);
           document.write("</td><td>");
           document.write(x[i].getElementsByTagName("ROAD_TYPE")[0].childNodes[0].nodeValue);
           document.write("</td></tr>");
         }
         document.write("</table>");

</script>

html 文件:

<html>
 <body>

<script>
 if (window.XMLHttpRequest)
   {// code for IE7+, Firefox, Chrome, Opera, Safari
   xmlhttp=new XMLHttpRequest();
   }
 else
   {// code for IE6, IE5
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
 xmlhttp.open("GET","http://data.one.gov.hk/others/td/speedmap.xml",false);
 xmlhttp.send();
 xmlDoc=xmlhttp.responseXML; 

document.write("<table border='1'>");
 var x=xmlDoc.getElementsByTagName("jtis_speedmap");
 for (i=0;i<x.length;i++)
   { 
  document.write("<tr><td>");
   document.write(x[i].getElementsByTagName("LINK_ID")[0].childNodes[0].nodeValue);
   document.write("</td><td>");
   document.write(x[i].getElementsByTagName("ROAD_TYPE")[0].childNodes[0].nodeValue);
   document.write("</td></tr>");
   }
 document.write("</table>");
 </script>

</body>
</html>

【问题讨论】:

  • 哪里失败了?读取 XML 还是解析它?将日志添加到浏览器控制台以更好地查看原因。
  • 究竟是什么不起作用? js_workable.js 可能有例外吗?您介意只发布提供的 HTML 页面,而不是 jsp 代码吗?顺便说一句,LANGUAGE="JavaScript" 已弃用。
  • 我现在不确定原因。我会检查这个。顺便说一句,谢谢您的建议!

标签: java javascript jsp servlets


【解决方案1】:

是跨域ajax请求,被Access-Control-Allow-Origin规则拦截。

解决方案你可以使用 jsp/servlet 发出一个 HTTP 请求来首先检索 XML 内容,然后你的 ajax 请求在本地继续你的 javascript。

【讨论】:

  • 谢谢!你能给我一些相关的网站吗,以便我可以了解更多信息?例如,jsp/servlet 发出一个 HTTP 请求来检索 XML 内容。
  • @user1976340,嗨,我对 JSP 了解不多。但我认为它可能会帮助你。 stackoverflow.com/a/8369324/782072
猜你喜欢
  • 2011-08-21
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
  • 2016-02-19
  • 2019-03-09
相关资源
最近更新 更多