ID:               44478
 User updated by:  vesko at webstudiobulgaria dot com
 Reported By:      vesko at webstudiobulgaria dot com
 Status:           Open
 Bug Type:         SimpleXML related
 Operating System: Debian testing
 PHP Version:      5.2.5
 New Comment:

Hi Felipe,

Thanks for the patch.
I've tested it against 5.2.5 source. It fixes the case:

$xml_element->addChild('node2','c & d');

but not the case:

$xml_element->node1[0] = 'a & b';//still decodes


Previous Comments:
------------------------------------------------------------------------

[2008-03-20 00:22:06] [EMAIL PROTECTED]

Simple patch:
http://felipe.ath.cx/diff/bug44478.diff

------------------------------------------------------------------------

[2008-03-19 13:16:15] vesko at webstudiobulgaria dot com

And another one:
$xml_element->node1[0] = 'a & b';

decodes the html entities while it should not.

------------------------------------------------------------------------

[2008-03-19 12:53:10] vesko at webstudiobulgaria dot com

Based on:
$xml_element = new simpleXMLElement('<root></root>');
$xml_element['attrib1'] = 'a &#38; b';
$xml_element->addAttribute('attrib2','c &#38; d');

print $xml_element['attrib1'];
print $xml_element['attrib2'];

which gives:
a &#38; bc &#38; d

I guess the correct behaviour is to leave the entities as they are, so
in the previous example addChild() gives the wring result.

------------------------------------------------------------------------

[2008-03-19 12:22:56] vesko at webstudiobulgaria dot com

Description:
------------
There is a difference in the way the html entities are handled when the
new nodes are assigned in different ways. In case of using addChild
method they are decoded, otherwise not.

Reproduce code:
---------------
$xml_element = new simpleXMLElement('<root></root>');
$xml_element->node1 = 'a &#38; b';
$xml_element->addChild('node2','c &#38; d');

print $xml_element->node1;
print $xml_element->node2;


Expected result:
----------------
a &#38; bc &#38; d//both left
or
a & bc & d//both decoded

Actual result:
--------------
a &#38; bc & d//one left and the other decoded


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=44478&edit=1

Reply via email to