объединить несколько объектов - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть код ниже, который создает объект, а затем преобразует объект в XML.Как вы можете видеть, у меня есть это в цикле, так как у меня есть несколько объектов.Я не хочу создавать новый XML-файл для каждого объекта, я хочу, чтобы все они были в одном XML-файле.Поэтому мне как-то нужно объединить объекты перед добавлением их в XML в этом цикле.Кто-нибудь есть идеи, как?

$orderObj1 = new Order();
    $orders = $orderObj1->getAllOrders();



    foreach ($orders as $order => $orderdetail){

        //create Order XML from object
        $orderObj2 = new Order($orderdetail['id']);

    }

    $serializer = new XML_Serializer(); 
    // set name for root element
    $serializer->setOption("rootName", "orders");   
    //add the XML declaration
    $serializer->setOption("addDecl", "true");


    $result = $serializer->serialize($orderObj2);

    if($result === true) {
     $orders_xml = $serializer->getSerializedData();
    }   

    echo  $orders_xml;

Ответы [ 2 ]

0 голосов
/ 20 февраля 2012

Кажется, я отсортировал это. Это было действительно просто. Мне просто нужно было сделать и массив объектов, как показано ниже:

$ordersObj = array();

    foreach ($orders as $order => $orderdetail){

        //create Order XML from object
        $ordersObj[] = new Order($db, $shopKeeperID, $orderdetail['id']);

    }

Я понятия не имел, что это будет возможно, но это работает. Спасибо за вашу помощь.

0 голосов
/ 20 февраля 2012

Они не могут быть правильным XML-файлом, если вы не начнете связываться с выходом сериализатора.Каждый из них начинается с заголовка xml (<?xml ...).Может быть только один из них ...

Это не обязательно проблема, вы можете обработать вывод как серию XML-документов и порезать их (как строку) перед попыткой десериализации (илилюбая другая форма процесса xml).

Вы можете создать объект, представляющий собой коллекцию документов xml, и затем сериализовать его, используя теги CDATA.

Теоретически вы можете глубоко копировать каждый узел всериализованный объект, сортировка пространств имен, а затем обратный процесс для десериализации, но это было бы невероятно хрупким ....

Я недавно сделал строковый маневр, он работал нормально ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...