【问题标题】:php get xml from remote url not a filephp从远程url获取xml不是文件
【发布时间】:2013-09-18 05:02:21
【问题描述】:

我正在尝试从此 url 获取 xml 数据。

http://cloud.tfl.gov.uk/TrackerNet/PredictionSummary/V 我可以直接在我的浏览器栏中输入 url 并获得所需的结果。

我正在尝试使用下面的代码来获取 xml 并将其返回到我的浏览器,但现在在正确的域中,因此可以通过 javascript 访问它。

<!DOCTYPE html>
<html>
<head>
    <link type='text/css' rel='stylesheet' href='style.css'/>
    <title>Get Started!</title>
</head>
<body>
    <p><?php 
    /*echo file_get_contents("http://cloud.tfl.gov.uk/TrackerNet/PredictionSummary/V");*/
    echo simplexml_load_file("http://cloud.tfl.gov.uk/TrackerNet/PredictionSummary/V");
    ?></p>
</body>
</html>

我已经尝试过 file_get_contents 和 simplexml_load_file 但都没有成功

我认为问题在于 url 末尾没有文件。 到目前为止都没有工作

【问题讨论】:

  • 删除 = 因为你没有分配
  • 您的语法错误。我建议你阅读php.net/manual/en/function.echo.php
  • 啊,我的错误是我尝试过的其他事情遗留下来的。我已经更正了语法,但它仍然不起作用
  • @PeterSaxton:如果您尝试在浏览器中显示 XML 文档,那么只需使用 file_get_contents。 echo file_get_contents("http://cloud.tfl.gov.uk/TrackerNet/PredictionSummary/V");
  • 除非我错过了一些我尝试过但无济于事的事情

标签: php xml cross-domain


【解决方案1】:

查看文档

http://php.net/manual/en/simplexml_load_file

打印输出示例

<?php
    $xml = simplexml_load_file('http://cloud.tfl.gov.uk/TrackerNet/PredictionSummary/V');
    print_r($xml);
?>

或查看手册

http://php.net/manual/en/function.echo.php

输出file_get_contents()返回的字符串

<?php
    $xml = file_get_contents("http://cloud.tfl.gov.uk/TrackerNet/PredictionSummary/V");
    echo $xml;
?>

【讨论】:

  • 你能详细说明什么不起作用吗?使用wireshark(或您的浏览器开发工具)查看哪些数据通过网络传输。也许他们正在该页面上寻找特定于浏览器的请求?
  • 我只是得到一个空白页。已经在 IE 和 chrome 中测试过。当我按 F12 时在 chrome 中(是开发人员工具)。当我检查元素时,我可以看到段落元素是空的。当我检查控制台时没有出现错误消息
  • 我是服务器端脚本和 php 的新手,已经花了几天时间浏览,但是当我面对一个空白屏幕时,我发现很难解决问题。我希望有一个简单的退回选项,这样我就可以继续使用我熟悉的 javascript。
【解决方案2】:

simplexml_load_file() 返回一个对象而不是 XML 字符串。即使那样,使用您当前的代码,XML 也会在 HTML 中丢失。以下相当于直接访问 URL:

header('Content-type: application/xml');
echo file_get_contents('http://cloud.tfl.gov.uk/TrackerNet/PredictionSummary/V');

为确保您可以解析 XML,试试这个。它加载 XML 并打印出根节点的名称 - 在本例中为 ROOT:

$xml = simplexml_load_file($url); //retrieve URL and parse XML content
echo $xml->getName(); // output name of root element

这有帮助吗?

【讨论】:

  • 我曾假设返回的 xml 甚至丢失在 html 中都是可见的,即使只是一个凌乱的字符串。我只想确认 xml 已正确加载到我的 php 脚本中,最简单的方法是查看它
  • 所以我的第一个代码示例,在它自己的 PHP 文件中,没有显示任何内容?
  • 在 php.ini 中,allow_url_fopen 指令是否设置为 On
  • 我正在寻找但尚未找到 php.ini 文件
  • PHP 运行在什么操作系统上(Windows、Ubuntu 等)?
【解决方案3】:

试试这个...对我有用..简单易行..

<?php
 $url=file_get_contents('http://www.w3schools.com/php/note.xml');
 $xml = new SimpleXMLElement($url);

 echo $xml->to;

 ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2011-08-22
    相关资源
    最近更新 更多