我们如何在php中访问simpleXMLElement对象

时间:2013-04-05 07:32:05

标签: php xml object simplexml

SimpleXMLElement Object
(
    [0] => CEM
)

这样有一个SimpleXMLElement对象。我尝试使用$object->0$object->{0}访问它。但它给出了一个php错误。我们如何在不将其更改为其他格式的情况下访问它。

2 个答案:

答案 0 :(得分:1)

从您的print_r输出中可能不是很明显:

SimpleXMLElement Object
(
    [0] => CEM
)

这只是一个包含字符串 CEM 的XML元素,例如:

<xml>CEM</xml>

您可以通过转换为字符串来获取该值(请参阅Basic SimpleXML usageDocs):

(string) $object;

当你有一个SimpleXMLElement对象并且你不确定它代表什么时,使用echo $object->asXML();输出XML并分析它比单独使用print_r更容易,因为这些元素有您需要知道的很多关于正确读取 print_r输出的魔法。

上面的一个例子:

<?php

$object = new SimpleXMLElement('<xml>CEM</xml>');

print_r($object);

echo "\n", $object->asXML(), "\n";

echo 'Content: ', $object, "\n";  // echo does cast to string automatically

输出:

SimpleXMLElement Object
(
    [0] => CEM
)

<?xml version="1.0"?>
<xml>CEM</xml>

Content: CEM

Online Demo

答案 1 :(得分:0)

在您的情况下,它会像您一样出现 print_r($ object)和$ object它是一个数组 所以你正在查看的不是XML对象,而是包含在print_r()

的显示对象中的数组

任何方式,要访问一个simpleXML对象,你可以在这里使用{} sytax:

$xmlString = '<uploads token="vwl3u75llktsdzi">
  <attachments>
    <attachment myattr="attribute value">123456789</attachment>
  </attachments>
</uploads>';

$xml  = simplexml_load_string($xmlString);
echo "attachment attribute: " . $xml->{"attachments"}->attributes()["myattr"] " \n";
echo " uploads attribute: " . $xml->{"uploads"}->attributes()["token"] . "\n";

你可以替换&#34;附件&#34;使用$ myVar或其他东西

请记住attributes()返回一个关联数组,以便您可以使用方括号或通过array_keys()访问数据,或者执行foreach循环。

在您的具体情况下可能只是

echo $object[0];  // returns string "CEM"