2012-12-31 48 views
8

我试图从URL从URL获取XML转换为可变

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

得到一个XML饲料,但似乎惨遭失败。我曾尝试

然而,这些都不似乎呼应一个很好的XML饲料时,我要么echoprint_r。最终目标是最终解析这些数据,但将它变成一个变量肯定会是一个不错的开始。

我附上我的代码如下。这是包含在一个循环中,并$typeID事实上确实给出正确的ID上面看到

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

我要声明,我看到了另一个奇怪的是,当我回声$网址,我得到

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

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

+0

您正在使用哪种浏览器?我问,因为我只是想知道有关注册商标符号的问题。 – hakre

回答

9

尝试以下操作:

<?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>"; 
} 
?> 
+0

我试过'$ volume = $ sxml-> buy-> volume;回声$音量'但是没有返回,任何想法为什么? – mhopkins321

+0

ahhhh marketstat – mhopkins321

+0

@ mhopkins321首先确保定义了'$ typeID',然后调用:'$ sxml-> marketstat-> type-> buy-> volume'(答案固定) – alfasin

4

你需要为了使一个来从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>'; 
+0

这会返回一些我不太熟悉的数据(尽管它可能是真正的原始xml的样子?)。如果想以$ xml-> sell-> average的方式调用节点。我将我的变量设置为什么?我尝试了'$ sell = $ xml-> sell-> average'然而这似乎不起作用 – mhopkins321

+0

很抱歉,将'var_dump'改为'print_r'会给你一个更友好的结果。要获得平均卖出价格,您需要执行'$ xml-> marketstat-> type-> sell-> average' – Supericy