【问题标题】:Consume a xml web service and parse it使用 xml web 服务并解析它
【发布时间】:2012-07-25 18:03:32
【问题描述】:

我正在为 Blackberry OS 5+ 开发一个 HTML5 应用程序。

我必须从http://domain.com/xxx/mTop 获取一个远程 xml 文件并对其进行解析以将其显示为列表。

我正在尝试使用 jQuery 和 AJAX 来实现,但我遇到了 Same Origin Policy 的问题。

我的问题是,如何获取远程 XML 文件并将其显示为列表?

它不是一个真正的文件,它是一个返回 XML 的 Web 服务。如果该 Web 服务返回 JSON,我可以解析它吗?

顺便问一下,这个question跟这个有关系

【问题讨论】:

  • 答案是你不能。这违反了同源政策。除非您的站点与远程文件位于同一域中,否则您的站点无法访问远程文件。如果远程站点支持 JSONP 或者远程服务器实现了 CORS,那么你就可以了。如果远程站点不这样做并且您不控制远程站点,则唯一的选择是让您的服务器下载该文件,然后将其提供给您的 HTM5 应用程序。
  • 它不是一个真正的文件,它是一个返回 XML 的 Web 服务。如果该 Web 服务返回 JSON,我可以解析它吗?
  • 据我了解的问题不是解析问题。如果远程服务器位于不同的域中,则根本无法从包括 Web 服务的远程服务器获取 XML。见stackoverflow.com/questions/9047155/…

标签: xml html jquery xml-parsing


【解决方案1】:

您可以使用服务器语言(例如 PHP)在您自己的域上构建一个与其他域(file_get_contentscurl 等)交互的中介,然后回显响应……然后您的应用程序只需与该代理而不是单独的域进行交互。

【讨论】:

  • 它不是一个真正的文件,它是一个返回 XML 的 Web 服务。如果该 Web 服务返回 JSON,我可以解析它吗?
  • 您应该能够以相同的方式与服务进行交互(特别是如果它接受 URL 中的参数...如果它们必须是 POST 的,那么您将需要使用 cURL)为什么你不能解析它?您只是通过代理将来自服务的响应传递给您的客户端。
【解决方案2】:

默认情况下不允许跨域请求使用 XML。

【讨论】:

  • 它不是一个真正的文件,它是一个返回 XML 的 Web 服务。如果该 Web 服务返回 JSON,我可以解析它吗?
  • 默认情况下不能。但也许我在某个地方看到了一些修改,这可能是可能的。我建议您使用您的服务器端脚本语言构建一个包装器,您可以在其中调用您的脚本,然后调用您的 Web 服务并返回响应。
  • 我无权访问托管 Web 服务的服务器。我问过 JSON,因为我不知道我会遇到同样的问题。
  • 您应该在您的主机中创建一个包装脚本。
猜你喜欢
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 2011-08-13
  • 1970-01-01
相关资源
最近更新 更多