使用simplexml_load_string获取xml属性

时间:2013-01-16 13:32:54

标签: php xml simplexml

  

可能重复:
  Accessing @attribute from SimpleXML

我正在使用一些第三方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.
)

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

2 个答案:

答案 0 :(得分:11)

它就在那里,但只是没有显示在print_r输出中。像the basic examples page coins it in Example #5 Using attributes

  

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

示例:

$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);

节目输出(Demo

SimpleXMLElement Object
(
    [0] => 111
)
111

答案 1 :(得分:3)

就像这样使用 echo $ xml-&gt; error ['code'];

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