【问题标题】:getting xml from URL into variable将 xml 从 URL 获取到变量中
【发布时间】:2012-12-15 20:50:10
【问题描述】:

我正在尝试从 url 获取 xml 提要

http://api.eve-central.com/api/marketstat?typeid=1230&regionlimit=10000002

但似乎失败得很惨。我试过了

然而,当我使用echoprint_r 时,这些似乎都没有回应一个不错的 XML 提要。最终目标是最终解析这些数据,但将其放入变量中肯定是一个不错的开始。

我在下面附上了我的代码。这包含在一个循环中,$typeID 实际上给出了正确的 ID,如上所示

$url = 'http://api.eve-central.com/api/marketstat?typeid='.$typeID.'&regionlimit=10000002';
echo $url."<br />";
$xml = new SimpleXMLElement($url);
print_r($xml);

我应该说明我看到的另一件奇怪的事情是,当我回显 $url 时,我得到了

http://api.eve-central.com/api/marketstat?typeid=1230®ionlimit=10000002

&amp;reg 是注册商标符号。我不确定这是我的浏览器中的“功能”,还是我的代码中的“功能”

【问题讨论】:

  • 您使用的是哪个浏览器?我问是因为我只是想知道注册商标符号的(附带问题)。

标签: php xml parsing simplexml


【解决方案1】:

尝试以下方法:

<?php
$typeID = 1230;
// set feed URL
$url = 'http://api.eve-central.com/api/marketstat?typeid='.$typeID.'&regionlimit=10000002';
echo $url."<br />";
// read feed into SimpleXML object
$sxml = simplexml_load_file($url);

// then you can do
var_dump($sxml);

// And now you'll be able to call `$sxml->marketstat->type->buy->volume` as well as other properties.
echo $sxml->marketstat->type->buy->volume;

// And if you want to fetch multiple IDs:
foreach($sxml->marketstat->type as $type){
    echo $type->buy->volume . "<br>";
}
?>

【讨论】:

  • 我尝试了$volume = $sxml-&gt;buy-&gt;volume; echo $volume 但是没有返回任何东西,知道为什么吗?
  • @mhopkins321 首先确保定义了$typeID,然后您应该调用:$sxml-&gt;marketstat-&gt;type-&gt;buy-&gt;volume(已修复)
  • 如果我的 url 是 http://api.eve-central.com/api/marketstat?typeid=1230&amp;typeid=1231&amp;regionlimit=10000002 对 php/xml 来说有点新(显然),其中会有两个不同的类型 id,在 -> 行中,id 会进入吗?
  • @mhopkins321 你不能传递两个 $typeID - 其中一个会超过另一个!
  • hmmm...这不是正常的 HTTP 行为...让我检查一下。
【解决方案2】:

您需要从 URL 中获取数据才能生成 XML 对象。

$url = 'http://api.eve-central.com/api/marketstat?typeid='.$typeID.'&regionlimit=10000002';

$xml = new SimpleXMLElement(file_get_contents($url));

// pre tags to format nicely
echo '<pre>';
print_r($xml);
echo '</pre>';

【讨论】:

  • 这会返回一些我不太熟悉的数据(尽管它可能是真正的原始 xml 的样子?)。如果想在 $xml->sell->average 处调用节点。我会将我的变量设置为什么?我尝试了$sell = $xml-&gt;sell-&gt;average,但似乎没有用
  • 抱歉,将var_dump 更改为print_r 会给您带来更友好的结果。要访问卖出平均值,您需要执行 $xml-&gt;marketstat-&gt;type-&gt;sell-&gt;average
猜你喜欢
  • 2011-09-28
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 2018-08-05
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多