Edit report at https://bugs.php.net/bug.php?id=64440&edit=1
ID: 64440
User updated by: matteosistisette at gmail dot com
Reported by: matteosistisette at gmail dot com
Summary: SimpleXMLElement needs a way to add text content to
a node
-Status: Feedback
+Status: Open
Type: Feature/Change Request
Package: SimpleXML related
Operating System: all
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
> What's wrong with $element[0] = "someText" ?
Oh,
- that it is not documented (which is why i had no idea it existed)
- that it is not object-oriented (which makes it even difficult to document:
there's no proper place in documentation where one would expect to find it)
> When editing sub-elements the following can be
used when there is only one matching "<child>":
$element->child = 'some text';
Yes, you need a reference to the parent, however, And this means you can't do
that with the root element.
Example use: you create an element, and depending on some condition you decide
whether to leave it empty or put content into it.
Previous Comments:
------------------------------------------------------------------------
[2013-03-16 19:03:23] [email protected]
What's wrong with $element[0] = "someText" ?
It is also not very often that one wishes to edit the documentElement's text
content. When editing sub-elements the following can be
used when there is only one matching "<child>":
$element->child = 'some text';
If there are multiple "<child>" elements, then you should specify which one to
change:
$element->child[2] = 'some text';
There is no requirement to use the "horrible hack" syntax: $element->{0}.
------------------------------------------------------------------------
[2013-03-16 18:28:46] matteosistisette at gmail dot com
Description:
------------
There is currently no way (except for this horrible hack
http://stackoverflow.com/questions/3153477/how-can-i-set-text-value-of-
simplexmlelement-without-using-its-parent) to add or modify the text content of
a
xml node with SimpleXMLElement.
It needs methods called somethig like addTextContent() or setTextContent() or
addTextNode() or whatever.
Now please don't tell me this is a feature request. This is a huge design flaw.
This is the lack of an obvious, vital feature.
Test script:
---------------
$xml_a=new SimpleXMLElement("<data/>");
$xml_b=new SimpleXMLElement("<data>someText</data>");
//Now try to modify $xml_a so that it becomes like $xml_b
//It's impossible.
/* You would need something like:
$xml_a->addContent("someText");
or
$xml_a->addTextNode("someText");
or
$xml_a->setContent("someText");
No way you can accomplish that*/
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=64440&edit=1