helly Tue Nov 1 06:53:14 2005 EDT
Modified files:
/php-src/ext/simplexml simplexml.c
/php-src/ext/simplexml/tests 025.phpt
Log:
- Handle default namespaces
# Another time it shows xml is far from being simple
http://cvs.php.net/diff.php/php-src/ext/simplexml/simplexml.c?r1=1.173&r2=1.174&ty=u
Index: php-src/ext/simplexml/simplexml.c
diff -u php-src/ext/simplexml/simplexml.c:1.173
php-src/ext/simplexml/simplexml.c:1.174
--- php-src/ext/simplexml/simplexml.c:1.173 Mon Oct 31 15:06:23 2005
+++ php-src/ext/simplexml/simplexml.c Tue Nov 1 06:53:12 2005
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: simplexml.c,v 1.173 2005/10/31 20:06:23 helly Exp $ */
+/* $Id: simplexml.c,v 1.174 2005/11/01 11:53:12 helly Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1102,18 +1102,25 @@
}
/* }}} */
+#define SXE_NS_PREFIX(ns) (ns->prefix ? (char*)ns->prefix : "")
+
+static inline void sxe_add_namespace_name(zval *return_value, xmlNsPtr ns)
+{
+ add_assoc_string(return_value, SXE_NS_PREFIX(ns), (char*)ns->href, 1);
+}
+
static void sxe_add_namespaces(php_sxe_object *sxe, xmlNodePtr node, zend_bool
recursive, zval *return_value TSRMLS_DC) /* {{{ */
{
xmlAttrPtr attr;
if (node->ns) {
- add_assoc_string(return_value, (char*)node->ns->prefix,
(char*)node->ns->href, 1);
+ sxe_add_namespace_name(return_value, node->ns);
}
attr = node->properties;
while (attr) {
if (attr->ns) {
- add_assoc_string(return_value, (char*)attr->ns->prefix,
(char*)attr->ns->href, 1);
+ sxe_add_namespace_name(return_value, attr->ns);
}
attr = attr->next;
}
@@ -1152,7 +1159,7 @@
if (node->type == XML_ELEMENT_NODE) {
sxe_add_namespaces(sxe, node, recursive, return_value
TSRMLS_CC);
} else if (node->type == XML_ATTRIBUTE_NODE && node->ns) {
- add_assoc_string(return_value, (char*)node->ns->prefix,
(char*)node->ns->href, 1);
+ sxe_add_namespace_name(return_value, node->ns);
}
next_iter:
node = node->next;
@@ -1165,7 +1172,7 @@
xmlNsPtr *ns = xmlGetNsList(doc, node);
while (ns && ns[0]) {
- add_assoc_string(return_value, (char*)ns[0]->prefix,
(char*)ns[0]->href, 1);
+ sxe_add_namespace_name(return_value, ns[0]);
ns++;
}
@@ -2003,7 +2010,7 @@
{
php_info_print_table_start();
php_info_print_table_header(2, "Simplexml support", "enabled");
- php_info_print_table_row(2, "Revision", "$Revision: 1.173 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 1.174 $");
php_info_print_table_row(2, "Schema support",
#ifdef LIBXML_SCHEMAS_ENABLED
"enabled");
http://cvs.php.net/diff.php/php-src/ext/simplexml/tests/025.phpt?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/simplexml/tests/025.phpt
diff -u php-src/ext/simplexml/tests/025.phpt:1.1
php-src/ext/simplexml/tests/025.phpt:1.2
--- php-src/ext/simplexml/tests/025.phpt:1.1 Mon Oct 31 14:09:13 2005
+++ php-src/ext/simplexml/tests/025.phpt Tue Nov 1 06:53:14 2005
@@ -23,8 +23,19 @@
var_dump($sxe->getDocNamespaces());
var_dump($sxe->getDocNamespaces(true));
+$xml =<<<EOF
+<?xml version='1.0'?>
+<html xmlns='http://www.w3.org/1999/xhtml'/>
+EOF;
+
+$sxe = simplexml_load_string($xml);
+
+var_dump($sxe->getNamespaces());
+var_dump($sxe->getDocNamespaces());
+
?>
===DONE===
+<?php exit(0); ?>
--EXPECTF--
array(1) {
["xhtml"]=>
@@ -54,6 +65,14 @@
["baz"]=>
string(9) "foobarbaz"
}
+array(1) {
+ [""]=>
+ string(28) "http://www.w3.org/1999/xhtml"
+}
+array(1) {
+ [""]=>
+ string(28) "http://www.w3.org/1999/xhtml"
+}
===DONE===
--UEXPECTF--
array(1) {
@@ -84,4 +103,12 @@
[u"baz"]=>
string(9) "foobarbaz"
}
+array(1) {
+ [u""]=>
+ string(28) "http://www.w3.org/1999/xhtml"
+}
+array(1) {
+ [u""]=>
+ string(28) "http://www.w3.org/1999/xhtml"
+}
===DONE===
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php