#44973 [Com]: SimpleXMLElement doesn't read attributes if xml nodes has a value

From: Date: Tue, 24 Jun 2008 14:21:35 +0000
Subject: #44973 [Com]: 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-125986@lists.php.net to get a copy of this message
 ID:               44973
 Comment by:       thomas dot sarlandie at backelite dot com
 Reported By:      norbert_schuetz at bigfoot dot com
 Status:           Verified
 Bug Type:         SimpleXML related
 Operating System: Linux 2.6.18-5-686
 PHP Version:      5.2.6
 New Comment:

We have encountered the same problem.

PHP Versions:
 * Windows / php 5.2.5 (WAMP 5)
 * MacOSX php 5.2.5 (OsX 10.5.3)
 * PHP 5.1.2 (linux/ubuntu edgy)

This is our test case:

<?php
//XML string
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<a last="1214311502">
	<b>
		<c name="xxx" a="negatif">
			<valeur type="points">444</valeur>
			<evo type="%">1.10</evo>
		</c>
	</b>
</a>';

// XML Parsing
$object_xml = simplexml_load_string($xml);
	
echo "<pre>";
print_r($object_xml);
echo "</pre>";
?>

regards,
thomas


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



Thread (6 messages)

« previous php.bugs (#125986) next »