将 xml 从 URL 获取到变量中

Posted

技术标签:

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

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

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

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

new SimpleXMLElement,

file_get_contents

http_get

然而,当我使用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 是注册商标符号。我不确定这是我的浏览器中的“功能”,还是我的代码中的“功能”

【问题讨论】:

您使用的是哪个浏览器?我问是因为我只是想知道注册商标符号的(附带问题)。 【参考方案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

以上是关于将 xml 从 URL 获取到变量中的主要内容,如果未能解决你的问题,请参考以下文章

如何从应用程序的(布局)XML 变量中获取清单版本号?

如何从 url 获取 json 数据并将其保存到 const 变量 [TypeScript]

如何将变量从 AsyncTask 返回到 Android 中的 Google Map 活动

从 URL 获取 ID 并将其存储在变量中

如何从url获取参数到变量

使用 PHP 从 URL 获取值并将其发送到 javascript 变量时出错