0

如何echo在 PHP 中这个 SimpleXMLElement 中的 OK 属性?

我一直试图解决这个问题几个小时,但我无法解决它。

SimpleXMLElement Object(
    [@attributes] => Array(
        [OK] => No
    )
    [NEWS] => SimpleXMLElement Object(
        [NEWS] => Blocked
    )
)
4

3 回答 3

2

如果您仔细查看手册,您会发现其中有一个attributes()功能。

只要您没有任何自定义命名空间,您可以简单地通过 调用您的 XML 对象attributes,然后通过它的名称调用某个属性。

echo $xml->attributes()->OK;

应该返回No

于 2013-07-19T19:26:25.167 回答
1

我不确定您是否对 的输出感到困惑print_r,但该示例的基础 XML 类似于<foo OK="No"><NEWS>Blocked</NEWS></foo>,所以 OK 是一个普通的 XML 属性。

正如手册的基本使用示例所示,使用 SimpleXML 访问属性的最简单方法是使用['attribute_name']. 所以在你的情况下,它会是这样的:

echo $node['OK'];

请注意,与所有访问器一样,它返回另一个 SimpleXML 对象,而不是字符串,因此如果您将其传递给代码的其他部分,您应该使用以下语法将其转换为字符串(string)以避免绊倒其他代码:

$ok_value = (string)$node['OK'];

正如其他人所指出的,还有一种attributes()方法可以让您遍历节点的所有属性,或访问特定 XML 命名空间中的属性。这两行相当于上面的两行:

echo $node->attributes()->OK;
$ok_value = (string)$node->attributes()->OK;
于 2013-07-19T22:14:34.090 回答
0
 $result = [PUT OBJECT HERE]->attributes()->OK;
  echo $result;
于 2013-07-19T20:48:17.590 回答