ID: 43221 Updated by: [EMAIL PROTECTED] Reported By: jevon at jevon dot org -Status: Assigned +Status: Closed Bug Type: SimpleXML related Operating System: Windows XP PHP Version: 5.2.4 Assigned To: rrichards New Comment:
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Note that all the examples here will now cause a warning due to trying to create invalid XML. Previous Comments: ------------------------------------------------------------------------ [2007-11-12 15:10:46] [EMAIL PROTECTED] updated summary. The bug is that an unprefixed attribute is being allowed to be created with a namespace and a default namespace is being added to the parent element. ------------------------------------------------------------------------ [2007-11-12 14:41:16] hubert dot roksor at gmail dot com It works just fine if you define your namespace beforehand. $xml = new SimpleXMLElement('<root xmlns:bar="http://bar.com"/>'); $n = $xml->addChild("node", "value"); $n->addAttribute("a", "b"); $n->addAttribute("c", "d", "http://bar.com"); print_r($xml->asXml()); I don't know, perhaps SimpleXML should raise a E_NOTICE on unknown namespace, but it's really a matter of good coding practice. Btw, jevon, I don't recommend saying that something is "screwy" when filing bug reports, it doesn't really motivate developpers of said software to look into them ^^; ------------------------------------------------------------------------ [2007-11-12 09:55:18] [EMAIL PROTECTED] Rob, could you take a look at it plz? ------------------------------------------------------------------------ [2007-11-09 02:48:17] jevon at jevon dot org Description: ------------ Namespace support in SimpleXML is all screwy. In particular, you cannot add two differently-namespaced attributes to a SimpleXML node; the first one is lost. Reproduce code: --------------- $xml = new SimpleXMLElement('<root />'); $n = $xml->addChild("node", "value"); // still fails even if we set a NS here $n->addAttribute("a", "b"); // still fails even if we set a different NS here $n->addAttribute("c", "d", "http://bar.com"); print_r($xml->asXml()); Expected result: ---------------- <root xmlns:a="http://bar.com"><node a="b" a:c="d">value</node></root> Actual result: -------------- <root><node xmlns="http://bar.com" a="b" c="d">value</node></root> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=43221&edit=1
