php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #29426 Incomplete/inconsistent functionality
Submitted: 2004-07-28 13:22 UTC Modified: 2005-02-22 11:56 UTC
Votes:4
Avg. Score:4.2 ± 0.8
Reproduced:4 of 4 (100.0%)
Same Version:1 (25.0%)
Same OS:1 (25.0%)
From: php at peterrobins dot co dot uk Assigned:
Status: Closed Package: SimpleXML related
PHP Version: 5.0.0 OS: Linux 2.4
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: php at peterrobins dot co dot uk
New email:
PHP Version: OS:

 

 [2004-07-28 13:22 UTC] php at peterrobins dot co dot uk
Description:
------------
According to the manual page, you can add a node with 
SimpleXML, but this does not seem to work, either as  
$xml->movie[0]->characters[0]->character[0]->age = '21'; 
nor as 
$xml->movie[0]->rating[2] = 'not bad'; 
 
Deletion works on attributes 
unset($xml->movie[0]->rating[1]['type']); 
but at node level, deletes all  
unset($xml->movie[0]->rating); 
This is inconsistent with reading where 
$xml->movie[0]->rating 
fetches the first node only. 
unset($xml->movie->rating); 
deletes all ratings for the 1st movie only. 
It does not appear possible to delete just 1 node 
unset($xml->movie[0]->rating[1]); 
 
Because objs are now refs not copies, can do this 
$rat = $xml->movie[0]->rating[0]; 
$rat['name'] = 'judge'; 
but not this 
$rat = 'new content'; 
nor this 
$rat->child[0] = 'new rating'; 
and if I try and do 
$rat->child = 'new rating'; 
I get 'Attempt to assign property of non-object' 
 


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2004-08-08 01:18 UTC] cyberlot at cyberlot dot net
Confirming this bug exists, Have the same problem, I need to add to a simplexml object on the fly and can't
 [2004-09-19 17:40 UTC] phpbugs at ilibi dot com
Either the documentation for simplexml should be 
clarified about exactly what can and can not be added/
edited. Or the ability to add nodes should be added to 
simplexml.
 [2004-10-06 07:14 UTC] matt dot bevan at marginsoftware dot com
I am also in the position where I need to be able to 
create and insert a SimpleXMLElement before or after an 
arbitrary SimpleXMLElement, then remove the previous 
instance.  This is to move XML elements from one location 
in an XML file into another. 
 
I'll likely be switching to/from a DOM object to 
accomplish this, however.
 [2005-02-15 00:33 UTC] tony2001@php.net
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc.

If possible, make the script source available online and provide
an URL to it here. Try to avoid embedding huge scripts into the report.


 [2005-02-22 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 [2005-02-22 11:56 UTC] php at peterrobins dot co dot uk
I have now revisited this using 5.0.3. Adding a node still  
doesn't work, but the manual page no longer claims that it  
does! Because of this, I've changed the status to closed.  
However, the manual page is still misleading, as it says 
(Example 7) "The object allows for manipulation of all of 
its elements" which is not really true. There are many 
limitations, as stated in this bug report and in the 
comment from brcavanagh, which says much the same thing. 
I'd suggest the manual page be updated to specify that 
SimpleXML is primarily for reading and simple updates, and 
is not really intended for more complex updating or 
deletion of nodes/nodesets.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Apr 25 00:01:41 2024 UTC