Re: Making SimpleXML more useful
| From: | Michael Shadle | Date: | Wed, 27 Apr 2011 03:31:16 +0000 |
| Subject: | Re: Making SimpleXML more useful | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-52016@lists.php.net to get a copy of this message | ||
Personally I'd love to see an option to make it spit out an array. Just like te second
parameter in json_decode()
Since array keys can include colons prefix work would also be easier. Then something akin to
array2XML() to spit it back out.
On Apr 26, 2011, at 7:43 PM, Tom Samplonius <tom@samplonius.org> wrote:
>
> ----- Original Message -----
>
>> A similar problem regarding attributes, that got classified as a doc
>> bug, but I
>> don't think is one: http://bugs.php.net/42083
>
>> If you're fishing around that area of the code, though, perhaps it is
>> quite
>> obvious to you where/how a patch should be made?
>
> I would recommend that you re-test that in 5.3.6, as there were a few changes. I don't
> know what they were specifically, as I never looked at the 5.2 SimpleXML code.
>
> But I also see one issue with your example.
>
> You look for all child elements in namespace
> 'http://localhost/a' as follows:
>
> foreach ($xml->children('http://localhost/a') as
> $elem) {
> unset($elem['attr']);
> $elem['attr']="new";
> $elem['attr']="three";
> echo $elem['attr']."\n";
> }
>
> I would expect the children() method to return just the last two elements of your input XML:
>
> <root xmlns="http://localhost/a"
> xmlns:ns="http://localhost/a">
> <elem attr="abc"/>
> <elem ns:attr="abc"/>
> <ns:elem attr="abc"/>
> <ns:elem ns:attr="abc"/>
> </root>
>
> as the last two elements are the only ones in the
> 'http://localhost/a' namespace.
>
>
> But this might be affected by the fact that you specified a namespace on the constructor.
> I'm not entirely sure what specifying a namespace on the constructor does, but I feel it is
> best avoided (and it isn't described in the docs). So rather than:
>
> $xml =
> simplexml_load_string($str,'SimpleXMLElement',0,'http://localhost/a');
>
> just:
>
> $xml = simplexml_load_string($str);
>
>
>
> Tom
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>