2012-02-20 3 views
0

오브젝트를 작성한 다음 오브젝트를 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; 
+0

코드를 잊어 버렸습니다. –

+0

참조 코드를 추가하십시오;) –

+0

호그와트에서 공부 했습니까? 또는 나는 시력으로 오래갑니다. "아래 코드"가 보이지 않습니다. 제출하기 전에 게시물을 확인하기위한 노력을 기울이십시오 : ( – mauris

답변

0

serialiser 출력으로 엉망이되지 않으면 올바른 xml 파일이 될 수 없습니다. 각각은 xml 헤더 (<?xml ...)으로 시작합니다. 그 중 하나만있을 수 있습니다 ...

이것은 반드시 문제가 아니므로 출력을 일련의 XML 문서로 처리하고 비 직렬화하기 전에 문자열로 잘라냅니다. xml 프로세스 형식).

XML 문서의 모음 인 개체를 만든 다음 CDATA 태그를 사용하여 직렬화 할 수 있습니다. 당신이 깊은 밖으로 정렬, 직렬화 된 객체의 이름 공간을 각 노드를 복사 한 다음 deserialisation의 과정을 역 그러나 그것은 매우 깨지기 쉬운 ....

나는 최근에 그것을 문자열 manouevre을 한 것입니다 수있는 이론적으로

괜찮 았어 ...

+0

개체를 직렬화하기 전에 개체를 결합하고자하므로 하나만 갖습니다. XML 헤더.이 작업을 수행 할 수있는 방법이 있습니까? – LeeTee

0

나는 그것을 분류 한 것 같다. 이것은 정말로 간단했습니다. 나는 간단하고 객체의 배열을 아래와 같이 필요한 :

$ordersObj = array(); 

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

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

    } 

나는이 가능할 것이다 몰랐다, 그러나 그것은 노력하고 있습니다. 당신의 도움을 주셔서 감사합니다.

+0

컬렉션을 하나의 파일로 직렬화하는 것과 직렬화 컬렉션을 하나의 파일로 덤핑하는 것 사이에는 큰 차이가 있습니다 .... –