Класс ArrayToXML
{
/ **
* Основная функция для преобразования XML-документов.
* Перейдите в многомерных массивов и это recrusively просматривает и создает XML-документ.
*
* @ Параметров массив $ данных
* @ Параметров строки $ rootNodeName - то, что вы хотите, чтобы корневой узел будет - defaultsto данных.
* @ Параметров SimpleXMLElement $ XML - следует использовать только рекурсивно
* @ Возвращение строки XML
* /
общественности статической ToXml функции ($ данным, $ rootNodeName = 'данные', $ XML = NULL)
{
/ / Выключить режим совместимости, как простой XML бросает шаткий, если вы не делаете.
если (ini_get ("zend.ze1_compatibility_mode ') == 1)
{
ini_set ('zend.ze1_compatibility_mode', 0);
}
если ($ XML == NULL)
{
$ XML = simplexml_load_string ("<версия XML = 'кодирование =' '1 .0 UTF-8"?> <$ RootNodeName /> ");
}
/ / Цикл по данным прошли дюйма
Еогеасп ($ данных $ ключ => $ значение)
{
/ / Нет цифровых клавиш в нашем XML, пожалуйста!
если (is_numeric ($ ключ))
{
/ / Сделать строку ключ ...
$ Ключ = "unknownNode_". (Строка) $ ключ;
}
/ / Заменить все не буквенно-цифровой
$ Ключ = preg_replace ('/ [^ az] / я', ", $ ключ);
/ / Если есть еще один массив найден recrusively вызывать эту функцию
если (is_array ($ значение))
{
$ = $ Узел XML-> AddChild ($ ключ);
/ / Recrusive вызова.
ArrayToXML :: ToXml ($ значение $ rootNodeName, $ узлов);
}
еще
{
/ / Добавить одного узла.
$ = Значение htmlentities ($ значение);
$ XML-> AddChild ($ ключ, $ значение);
}
}
/ / Передать обратно в виде строки. или просто XML-объект, если вы хотите!
return $ XML-> asXML ();
}
}













































