Browse Source

Merge branch '1.3-misc' of code.cakephp.org:cakephp into 1.3-misc

jperras 16 years ago
parent
commit
1ed4a63416
2 changed files with 27 additions and 6 deletions
  1. 3 4
      cake/libs/xml.php
  2. 24 2
      cake/tests/cases/libs/xml.test.php

+ 3 - 4
cake/libs/xml.php

@@ -704,7 +704,6 @@ class XmlNode extends Object {
 				continue;
 			} elseif (isset($child->children[0]) && is_a($child->children[0], 'XmlTextNode')) {
 				$value = $child->children[0]->value;
-
 				if ($child->attributes) {
 					$value = array_merge(array('value' => $value), $child->attributes);
 				}
@@ -720,10 +719,10 @@ class XmlNode extends Object {
 				continue;
 			} elseif (count($child->children) === 0 && $child->value == '') {
 				$value = $child->attributes;
-				if (isset($out[$child->name]) || isset($multi[$key])) {
+				if (isset($out[$key]) || isset($multi[$key])) {
 					if (!isset($multi[$key])) {
-						$multi[$key] = array($out[$child->name]);
-						unset($out[$child->name]);
+						$multi[$key] = array($out[$key]);
+						unset($out[$key]);
 					}
 					$multi[$key][] = $value;
 				} elseif (!empty($value)) {

+ 24 - 2
cake/tests/cases/libs/xml.test.php

@@ -784,7 +784,7 @@ class XmlTest extends CakeTestCase {
 
 /**
  * test that empty values do not casefold collapse
- * 
+ *
  * @see http://code.cakephp.org/tickets/view/8
  * @return void
  **/
@@ -820,7 +820,7 @@ class XmlTest extends CakeTestCase {
 				<name>varchar(45)</name>
 			</User>
 		</method>';
-		
+
 		$xml =& new XML($emptyValue);
 		$expected = array(
 			'Method' => array(
@@ -1204,7 +1204,29 @@ class XmlTest extends CakeTestCase {
 				)
 			)
 		));
+		$this->assertEqual($result, $expected);
 
+		$text = '<?xml version="1.0" encoding="UTF-8"?>
+		<root>
+			<child id="1" other="1" />
+			<child id="2" other="1" />
+			<child id="3" other="1" />
+			<child id="4" other="1" />
+			<child id="5" other="1" />
+		</root>';
+		$xml = new Xml($text);
+		$result = $xml->toArray();
+		$expected = array(
+			'Root' => array(
+				'Child' => array(
+					array('id' => 1, 'other' => 1),
+					array('id' => 2, 'other' => 1),
+					array('id' => 3, 'other' => 1),
+					array('id' => 4, 'other' => 1),
+					array('id' => 5, 'other' => 1)
+				)
+			)
+		);
 		$this->assertEqual($result, $expected);
 	}