diff --git a/src/DataParser.php b/src/DataParser.php index 2ca2ac6..a3f0197 100644 --- a/src/DataParser.php +++ b/src/DataParser.php @@ -23,6 +23,7 @@ * @method static string toXmlString(array $var) * @method static DOMDocument toDomObject(string $var) * @method static string toMultipartString(array $var, string $boundary) + * @method static array toXmlArray(string $xml) */ class DataParser { @@ -81,11 +82,11 @@ public static function __callStatic($name, $arguments) } $callMap = static::getCallableMap(); if (TypeDetector::canBeArray($var) && isset($callMap[$name]['supports']['array'])) { - return $callMap[$name]['supports']['array']($var); + return $callMap[$name]['supports']['array'](...$arguments); } elseif (TypeDetector::canBeString($var) && isset($callMap[$name]['supports']['string'])) { - return $callMap[$name]['supports']['string']($var); + return $callMap[$name]['supports']['string'](...$arguments); } elseif (is_object($var) && isset($callMap[$name]['supports']['object'])) { - return $callMap[$name]['supports']['object']($var); + return $callMap[$name]['supports']['object'](...$arguments); } throw new InvalidArgumentException( @@ -177,4 +178,12 @@ public static function arrayToMultipartString(array $var, string $boundary): str return $ret; } + + public static function stringToXmlArray(string $xml): array + { + libxml_disable_entity_loader(true); + $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); + + return json_decode(json_encode($xmlstring), true); + } }