ID: 40105 Updated by: [EMAIL PROTECTED] Reported By: fletch at pobox dot com -Status: Open +Status: Bogus Bug Type: DOM XML related Operating System: linux PHP Version: 5.2.0 New Comment:
$dom = new DOMDocument( "1.0", 'UTF-8' ); $dom->appendChild( $dom->createElement( 'root',' ' )); var_dump( trim( $dom->saveXML() ) ); prints out string(57) "<?xml version="1.0" encoding="UTF-8"?> <root> </root>" Anyway, this is really not a PHP issue (if it is one at all), but a libxml2 issue. If you still think this is a bug, report it there Previous Comments: ------------------------------------------------------------------------ [2007-01-18 17:04:11] fletch at pobox dot com Thanks for the quick response. I did change the bug status back to "open" but I didn't assign it, [EMAIL PROTECTED] did. I believe you're right that this particular example both XML strings are the same, but only because the NCR I used represents a printable character. A non-printable character must be represented as its NCR. There's no way to craft a node whose value contains an NCR, and as such, no way to create an element whose value contains non-printable characters. ------------------------------------------------------------------------ [2007-01-18 11:05:19] [EMAIL PROTECTED] <root> </root> and <root> </root> (the space here being a non breakable space) is the same in the XML context... It doesn't matter, if your write a character as numerical entity or with the actual char. It's the same. You have to live with that. And please don't just assign bugs... ------------------------------------------------------------------------ [2007-01-18 06:01:08] fletch at pobox dot com I'm aware of the differences in escaping between createElement() and createTextNode() and neither one does what I describe. createElement() unescapes NCRs (as I described in the original description) while createTextNode() escapes values. In a nutshell, using createElement() I end up with "<root> </root>", and using createTextNode() I end up with "<root>&#0160;</root>". There is no way to generate the literal XML "<root> </root>" using either createElement() OR createTextNode() ------------------------------------------------------------------------ [2007-01-12 07:44:43] [EMAIL PROTECTED] It was decided to leave it as it is (for backwards compatibility reasons) use $dom->createTextNode() for the behaviour you want. ------------------------------------------------------------------------ [2007-01-11 23:28:30] fletch at pobox dot com There's a trivial error in the expected result text: the string length produced by var_dump() should be 65, not 59. ------------------------------------------------------------------------ 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/40105 -- Edit this bug report at http://bugs.php.net/?id=40105&edit=1