mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Fix error when generating Xml.
Fix warnings/un-escaped entities with deeply nested elements. Fixes #3718
This commit is contained in:
parent
819029e1f3
commit
5d6a6fa203
2 changed files with 37 additions and 3 deletions
|
@ -459,6 +459,41 @@ XML;
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that there are not unterminated errors when building xml
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testFromArrayUnterminatedError() {
|
||||
$data = array(
|
||||
'product_ID' => 'GENERT-DL',
|
||||
'deeplink' => 'http://example.com/deep',
|
||||
'image_URL' => 'http://example.com/image',
|
||||
'thumbnail_image_URL' => 'http://example.com/thumb',
|
||||
'brand' => 'Malte Lange & Co',
|
||||
'availability' => 'in stock',
|
||||
'authors' =>array(
|
||||
'author' => array('Malte Lange & Co')
|
||||
)
|
||||
);
|
||||
$xml = Xml::fromArray(array('products' => $data), 'tags');
|
||||
$expected = <<<XML
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<products>
|
||||
<product_ID>GENERT-DL</product_ID>
|
||||
<deeplink>http://example.com/deep</deeplink>
|
||||
<image_URL>http://example.com/image</image_URL>
|
||||
<thumbnail_image_URL>http://example.com/thumb</thumbnail_image_URL>
|
||||
<brand>Malte Lange & Co</brand>
|
||||
<availability>in stock</availability>
|
||||
<authors>
|
||||
<author>Malte Lange & Co</author>
|
||||
</authors>
|
||||
</products>
|
||||
XML;
|
||||
$this->assertXmlStringEqualsXmlString($expected, $xml->asXML());
|
||||
}
|
||||
|
||||
/**
|
||||
* testToArray method
|
||||
*
|
||||
|
|
|
@ -300,10 +300,9 @@ class Xml {
|
|||
$childValue = (string)$value;
|
||||
}
|
||||
|
||||
$child = $dom->createElement($key);
|
||||
if ($childValue) {
|
||||
$child = $dom->createElement($key, $childValue);
|
||||
} else {
|
||||
$child = $dom->createElement($key);
|
||||
$child->appendChild($dom->createTextNode($childValue));
|
||||
}
|
||||
if ($childNS) {
|
||||
$child->setAttribute('xmlns', $childNS);
|
||||
|
|
Loading…
Reference in a new issue