It seems like when dealing with nodes which have CDATA, I cannot get
access to both the attributes of that node and the CDATA of that node
with the same simplexml_load_string() call.  Consider the following:

$previewString =
'<root><message><![CDATA[lkjlkjklj]]></message><buttons><button
name="Add Me"><![CDATA[This is my free form
text]]></button></buttons></root>';

When passing LIBXML_NOCDATA:

echo '<pre>' . print_r( json_decode( json_encode(
(array)simplexml_load_string( $previewString, 'SimpleXMLElement',
LIBXML_NOCDATA | LIBXML_NOBLANKS )), 1 ), TRUE ) . '</pre>';

yields the following output :

Array
(
    [message] => lkjlkjklj
    [buttons] => Array
        (
            [button] => This is my free form text
        )
)

So I get the CDATA but I don't get the "name" attribute for the button.

When not using LIBXML_NOCDATA:

echo '<pre>' . print_r( json_decode( json_encode(
(array)simplexml_load_string( $previewString, 'SimpleXMLElement',
LIBXML_NOBLANKS )), 1 ), TRUE ) . '</pre>';

yields the following output :

Array
(
    [message] => Array
        (
        )
    [buttons] => Array
        (
            [button] => Array
                (
                    [@attributes] => Array
                        (
                            [name] => Add Me
                        )
                )
        )
)

I get the attributes but not the CDATA.  Looking at the doc page for
simplexml_load_string()
(http://us.php.net/manual/en/function.simplexml-load-string.php and
http://us.php.net/manual/en/libxml.constants.php), I don't see a way
to get access to both.  Am I missing something?  Or is this really not
possible?

thnx,
Christoph

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to