我正在尝试使用我在以下代码中使用的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在一个数组中。请帮帮我
答案 0 :(得分:1)
CURL不用于设置数据。你不得不求助于某些图书馆。对于您的情况,我建议使用SimpleXML。例如:
$xml = simplexml_load_string($query);
var_dump($xml);
然后,您可以使用标准数组索引访问各种属性:
echo $xml['Message']; // Yields "Access Denied"
答案 1 :(得分:0)
要将XML转换为数组,如alexn already suggested,您可以使用simplexml_load_string
并将其返回值转换为数组:
$array = (array) simplexml_load_string($query);
print_r($array);
这会给你:
Array
(
[Code] => AccessDenied
[Message] => Access Denied
[RequestId] => B4DE627B9936548B
[HostId] => LyB4mVbYLYF/a26Wn04sSuMlTwQjLozl11O9Ql2YbMwHgenXRUCd7WAn5QPRa6nj
)
这可能正是您正在寻找的。 p>