3

可能重复:
从 SimpleXML 访问 @attribute

我正在使用一些第三方 API,它们通过 xml 以下列形式返回错误:

<xml>
<status>0</status>
<error code="111">Error message text goes here.</error>
</xml>

在 PHP 中使用simplexml_load_string我可以轻松获得状态 0 和错误消息文本,但我找不到code="111"<error code="111">. 它似乎被 SimpleXML 丢弃了。

<?php
    $bytesRead = file_get_contents('http://api.....');
    $xml = simplexml_load_string($bytesRead);

    echo '<pre>'; print_r($xml); echo '</pre>';
?>

输出

SimpleXMLElement Object
(
    [status] => 0
    [error] => Error message text goes here.
)

我错过了什么吗?有没有办法获得这个值,或者有人可以建议另一种方法来获得这个值?

4

2 回答 2

11

它在那里,但只是没有显示在print_r输出中。就像示例 #5中的基本示例页面一样使用属性:

到目前为止,我们只介绍了读取元素名称及其值的工作。SimpleXML 还可以访问元素属性。像访问数组元素一样访问元素的属性。

例子:

$x = '<xml>
<status>0</status>
<error code="111">Error message text goes here.</error>
</xml>';

$attributeObject = simplexml_load_string($x)->error['code'];

print_r($attributeObject);
print_r((string) $attributeObject);

程序输出(演示

SimpleXMLElement Object
(
    [0] => 111
)
111
于 2013-01-16T13:38:10.083 回答
3

像这样使用 echo $xml->error['code'];

例如: http ://codepad.org/uOqeBNz9

于 2013-01-16T13:41:24.950 回答