ID:               42001
 Updated by:       [EMAIL PROTECTED]
 Reported By:      stefan dot priebsch at e-novative dot de
-Status:           Open
+Status:           Bogus
 Bug Type:         Documentation problem
 Operating System: irrelevant
 PHP Version:      Irrelevant
 New Comment:

Problem is that SimpleXML ignored CDATA. json_encode() thus cannot
encode it.


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

[2007-07-17 07:54:06] [EMAIL PROTECTED]

Well, although I also think this could be a bug, it should at least be
clarified in the documentation as it's not clear enough now it seems.

(Please don't change the summary though)

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

[2007-07-17 07:46:39] stefan dot priebsch at e-novative dot de

Anthony, I am terribly sorry, but I completely fail to see your point.
What is the difference between an object and its data? An object is
code+data, and I am sure that we'll agree that no code will ever be
serialized or show up when something is cast to string.

Besides, look at more complex examples: They work fine when *not* cast
to string. When casting to string, json_encode() does not work at all.
When json_encoding a complex XML structure, however, CDATA still does
not show up - this is a bug.

Example:

  $xml = new SimpleXMLElement('<?xml version="1.0"
encoding="UTF-8"?><test><sub>test</sub><another>value</another><path><to><tag>something</tag></to></path></test>');
  var_dump(json_encode($xml));
  var_dump(json_encode((string) $xml));

  $xml = new SimpleXMLElement('<?xml version="1.0"
encoding="UTF-8"?><test><sub><![CDATA[test]]></sub><another>value</another><path><to><tag>something</tag></to></path></test>');
  var_dump(json_encode($xml));
  var_dump(json_encode((string) $xml));

So the situation is: you are telling me to cast to string before
encoding. This works on "primitive" XML, but not on real one with nested
tags. Encoding nested tags works fine if not casting to string, though,
except for the fact that CDATA does not show up.

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

[2007-07-16 21:52:58] [EMAIL PROTECTED]

>json_encode() does not work with SimpleXML data that contains CDATA.

json_encode() encodes THE OBJECT, but you actually meant to encode IT'S
DATA. To do that you need to cast it to string, as I've said in the
original report.

>Either this is a bug in PHP (which you claim it is not, bogusifying
>my bug report) or the documentation is inaccurate.

The function works as expected and the docs are correct.
Please read what I'm writing to you.
We're not going to explain every possible user error in the docs, it
would take gigabytes otherwise.

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

[2007-07-16 21:43:43] stefan dot priebsch at e-novative dot de

json_encode() does not work with SimpleXML data that contains CDATA.
Either this is a bug in PHP (which you claim it is not, bogusifying my
bug report) or the documentation is inaccurate.

As a PHP developer I don't really care wether SimpleXML data is
serialized to json_encode() it or not, I care wether the conversion
works for all types as the manual suggests - and it does not.

As you don't consider #41976 a bug in PHP, you should at least change
the manual. You can't just claim json_encode() works on any data type,
when it does not.

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

[2007-07-16 09:06:15] [EMAIL PROTECTED]

Please read the explanation in the original report, there is nothing
wrong in the docs.

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

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/42001

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

Reply via email to