mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Fix issues with getting Xml as SimpleXmlElement and invalid Xml.
Fixes #3855
This commit is contained in:
parent
41e0c524f2
commit
7334643b55
2 changed files with 24 additions and 6 deletions
|
@ -187,12 +187,23 @@ class XmlTest extends CakeTestCase {
|
|||
*
|
||||
* @dataProvider invalidDataProvider
|
||||
* @expectedException XmlException
|
||||
* return void
|
||||
* @return void
|
||||
*/
|
||||
public function testBuildInvalidData($value) {
|
||||
Xml::build($value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that building SimpleXmlElement with invalid XML causes the right exception.
|
||||
*
|
||||
* @expectedException XmlException
|
||||
* @return void
|
||||
*/
|
||||
public function testBuildInvalidDataSimpleXml() {
|
||||
$input = '<derp';
|
||||
$xml = Xml::build($input, array('return' => 'simplexml'));
|
||||
}
|
||||
|
||||
/**
|
||||
* test build with a single empty tag
|
||||
*
|
||||
|
|
|
@ -131,16 +131,23 @@ class Xml {
|
|||
if ($hasDisable && !$options['loadEntities']) {
|
||||
libxml_disable_entity_loader(true);
|
||||
}
|
||||
try {
|
||||
if ($options['return'] === 'simplexml' || $options['return'] === 'simplexmlelement') {
|
||||
$xml = new SimpleXMLElement($input, LIBXML_NOCDATA);
|
||||
} else {
|
||||
$xml = new DOMDocument();
|
||||
$xml->loadXML($input);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
$xml = null;
|
||||
}
|
||||
if ($hasDisable && !$options['loadEntities']) {
|
||||
libxml_disable_entity_loader(false);
|
||||
}
|
||||
libxml_use_internal_errors($internalErrors);
|
||||
if ($xml === null) {
|
||||
throw new XmlException(__d('cake_dev', 'Xml cannot be read.'));
|
||||
}
|
||||
return $xml;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue