Содержание


XML to JSON


XML в JSON, JSON, XML, ЗФ2, Zend Framework 2, ZF2, ру, ru




Zend\Json предоставляет удобные методы для конвертирования данных в формате XML в формат JSON. Эта реализация появилась после прочтения разработчиками статьи IBM «developerWorks».

 

В составе Zend\Json есть метод, называющийся «Zend\Json\Json::fromXml()». Он формирует JSON представление данных из XML. Принимает любую строку XML как параметр.  Так же можно передать дополнительный булевый параметр, отвечающий за то, нужно ли или нет игнорировать XML атрибуты в процессе конвертирования.  По умолчанию – игнорируются. Пример использования:

// fromXml function simply takes a String containing XML contents
// as input.
$jsonContents = Zend\Json\Json::fromXml($xmlStringContents, true);

Если в процессе конвертирования данных возникли какие то  ошибки – выбросится исключение. Для обхода XML дерева используется рекурсивный механизм. Поддерживается рекурсия до 25 уровней. Если количество вложенных уровней в дереве превысит 25 – выдаст  исключение  Zend\Json\Exception.

 

В директории «test» Zend Framework содержатся несколько различных XML файлов, которые Вы можете использовать для проверки работоспособности выше описанных  функций.

 

Далее рассмотри пример, где рассмотри, как передавать данные в формате XML и как возвращаются данные в формате JSON из метода «Zend\Json\Json::fromXml()». В этом примере атрибуты XML  не игнорируются. Так, не забудьте, что в полученных данных JSON  будет представление XML   атрибутов, которые присутствуют в XML  данных, отправленных для конвертации.

 

 

XML  данные на входе:

<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book id="1">
        "><title>Code Generation in Action"></title>
        <author><first>Jack</first><last>Herrington</last></author>
        "><publisher>Manning"></publisher>
    "></book>
 
    <book id="2">
        "><title>PHP Hacks"></title>
        <author><first>Jack</first><last>Herrington</last></author>
        "><publisher>O'Reilly"></publisher>
    </book>
 
    <book id="3">
        <title>Podcasting Hacks</title>
        <author><first>Jack</first><last>Herrington</last></author>
        <publisher>O'Reilly</publisher>
    </book>
</books>

JSON данные на выходе:

{
   "books" : {
      "book" : [ {
         "@attributes" : {
            "id" : "1"
         },
         "title" : "Code Generation in Action",
         "author" : {
            "first" : "Jack", "last" : "Herrington"
         },
         "publisher" : "Manning"
      }, {
         "@attributes" : {
            "id" : "2"
         },
         "title" : "PHP Hacks", "author" : {
            "first" : "Jack", "last" : "Herrington"
         },
         "publisher" : "O'Reilly"
      }, {
         "@attributes" : {
            "id" : "3"
         },
         "title" : "Podcasting Hacks", "author" : {
            "first" : "Jack", "last" : "Herrington"
         },
         "publisher" : "O'Reilly"
      }
   ]}
}

Автор статьи: DuB