static function getXml($arrData = false, $root = 'root') { $xml = '<?xml version="1.0" encoding="UTF-8"?><' . $root . '></' . $root . '>'; if (is_array($arrData) && !empty($arrData)) { $objXml = simplexml_load_string($xml); self::parseMultiArrayToXml($objXml, $arrData); $xml = strings::htmlDecode($objXml->asXML()); } return $xml; }
/** * private функция записи данных в xml * * @param array $arrFieldsXmlData - эталонный массив для данных хранимых в формате xml * * @return bool */ private function formXmlData(&$arrFieldsXmlData) { if (is_array($arrFieldsXmlData) && !empty($arrFieldsXmlData)) { $xmlData = simplexml_load_string('<?xml version="1.0" encoding="UTF-8"?><root></root>'); foreach ($arrFieldsXmlData as $nameField => &$fieldValues) { if (is_array($fieldValues) && !empty($fieldValues)) { $xmlField = $xmlData->addChild($nameField); foreach ($fieldValues as &$arrFieldsVals) { if (isset($arrFieldsVals['arrBindFields']) && is_array($arrFieldsVals['arrBindFields']) && !empty($arrFieldsVals['arrBindFields']) || isset($arrFieldsVals['arrNoBindFields']) && is_array($arrFieldsVals['arrNoBindFields']) && !empty($arrFieldsVals['arrNoBindFields'])) { $child = $xmlField->addChild('child'); if (isset($arrFieldsVals['arrBindFields'])) { foreach ($arrFieldsVals['arrBindFields'] as $field => &$value) { !empty($value) ? $child->addChild($field, '<![CDATA[' . $value . ']]>') : $child->addChild($field); } } if (isset($arrFieldsVals['arrNoBindFields'])) { foreach ($arrFieldsVals['arrNoBindFields'] as $field => &$value) { !empty($value) ? $child->addChild($field, '<![CDATA[' . $value . ']]>') : $child->addChild($field); } } } else { unset($xmlData->{$nameField}); continue; } } } else { continue; } } $this->arrServiceFields['xml_data'] = strings::htmlDecode($xmlData->asXML()); return true; } else { return false; } }