繁体   English   中英

使用curl解析XML API

[英]Parse XML api using curl

我正在尝试使用以下代码中使用的api URL解析xml数据。 当我直接在浏览器中运行此url时,它为我提供了xml格式的数据,如下所示。

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>B4DE627B9936548B</RequestId>
<HostId>LyB4mVbYLYF/a26Wn04sSuMlTwQjLozl11O9Ql2YbMwHgenXRUCd7WAn5QPRa6nj</HostId>
</Error>

但是我想要这个xml数组,然后我将使用foreach循环对该数组进行迭代。

curl_setopt($ch, CURLOPT_URL,'http://mybucket.s3.amazonaws.com  
/11111.mpg&mpaction=convert%20format=flv');

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_USERAGENT, 'Your application name');

$query = curl_exec($ch);

curl_close($ch);

echo $query;

?>

当我打印变量$ query时,它只给我xml文本。 我想要此xml数组中。 请帮我

CURL不用于粘贴数据。 您必须为此使用一些图书馆。 对于您的情况,我建议使用SimpleXML 例:

$xml = simplexml_load_string($query);
var_dump($xml);

然后,您可以使用标准数组索引访问各种属性:

echo $xml['Message']; // Yields "Access Denied"

要将XML转换为数组,正如alexn已经建议的那样 ,您可以使用simplexml_load_string并将其返回值转换为数组:

$array = (array) simplexml_load_string($query);
print_r($array);

那给你:

Array
(
    [Code] => AccessDenied
    [Message] => Access Denied
    [RequestId] => B4DE627B9936548B
    [HostId] => LyB4mVbYLYF/a26Wn04sSuMlTwQjLozl11O9Ql2YbMwHgenXRUCd7WAn5QPRa6nj
)

这可能正是您要寻找的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM