#44973 [Ver->Bgs]: SimpleXMLElement doesn't read attributes if xml nodes has a value

From: Date: Thu, 30 Apr 2009 19:19:48 +0000
Subject: #44973 [Ver->Bgs]: SimpleXMLElement doesn't read attributes if xml nodes has a value
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-136593@lists.php.net to get a copy of this message
ID: 44973 Updated by: jani@php.net Reported By: norbert_schuetz at bigfoot dot com -Status: Verified +Status: Bogus Bug Type: SimpleXML related Operating System: Linux 2.6.18-5-686 PHP Version: 5.2.6 New Comment: The attributes are there, you're just misusing simplexml: Try this instead: foreach ($xml->product as $foo) var_dump($foo); Previous Comments: ------------------------------------------------------------------------ [2008-05-13 13:29:47] felipe@php.net The attribute can be accessed, however toString really doesn't show it. print_r($xml->product[1]); SimpleXMLElement Object ( [@attributes] => Array ( [order_id] => 0002 ) [0] => PHP book ) ------------------------------------------------------------------------ [2008-05-12 15:44:22] norbert_schuetz at bigfoot dot com Description: ------------ PHP Version: PHP 5.2.0-8+etch11 (CLI) from php5-cli_5.2.0-8+etch10_i386.deb Linux 2.6.18-5-686 #1 SMP Sun Aug 12 21:57:02 UTC 2007 i686 GNU/Linux Simplexml support => enabled Revision => $Revision: 1.151.2.22.2.15 $ Schema support => enabled libexpat1_1.95.8-3.4_i386.deb Description of problem: For the second xml product item from the sample XML there is no order_id-attribute in the resulting object, while both first an last items have it. Reproduce code: --------------- <?php $xmlstr=<<<EOXML <?xml version='1.0' standalone='yes'?> <products> <product order_id="0001"></product> <product order_id="0002">PHP book</product> <product order_id="0003"> <name>PHP book</name> </product> </products> EOXML; $xml=new SimpleXMLElement($xmlstr); print_r($xml); ?> Expected result: ---------------- @attributes array for second item as well Actual result: -------------- SimpleXMLElement Object ( [product] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [order_id] => 0001 ) ) [1] => PHP book [2] => SimpleXMLElement Object ( [@attributes] => Array ( [order_id] => 0003 ) [name] => PHP book ) ) ) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=44973&edit=1

« previous php.bugs (#136593) next »