public static function xml2array($xml) { $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); $parserResultStatus = xml_parse_into_struct($parser, $xml, $values); if ($parserResultStatus !== 1) { throw new Corto_XmlToArray_Exception('Error parsing incoming XML. ' . PHP_EOL . 'Error code: ' . xml_error_string(xml_get_error_code($parser)) . PHP_EOL . 'XML: ' . $xml); } xml_parser_free($parser); self::$_singulars = array_fill_keys(self::$_singulars, 1); $return = self::_xml2array($values); self::$_singulars = array_keys(self::$_singulars); return $return[0]; }
public static function xml2array($xml, $topleveltag = false) { $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); $parserResultStatus = xml_parse_into_struct($parser, $xml, $values); if ($parserResultStatus !== 1) { throw new Corto_XmlToArray_Exception('Error parsing incoming XML. ' . PHP_EOL . 'Error code: ' . xml_error_string(xml_get_error_code($parser)) . PHP_EOL . 'Line: ' . xml_get_current_line_number($parser) . PHP_EOL . 'XML: ' . $xml); } xml_parser_free($parser); self::$_singulars = array_fill_keys(self::$_singulars_list, 1); $return = self::_xml2array($values); if ($topleveltag) { return array($return[0]['__t'] => array($return[0])); } return $return[0]; }