2011-08-30 3 views
0

잘되지 않는 기능은 다음과 같습니다.PHP에서 XML을 함께 추가하는 방법

$attendXml = ""; 
for ($i=0;$i<count($attendData);$i++) { 
    $attendXml += assocArrayToXML('row',$attendData[$i]); 
} 

잘못 쓰었지 만 내가 뭘 하려는지 생각해 봅니다. 코드는 다음 프로그램에서 나옵니다. organXml 검색은 정상적으로 작동하지만 문제는 문제의 배열 (연관 없음)이 여러 개 포함 된 배열 (연관 없음)에서 발생합니다.

각각의 연관 배열의 XML을 '행'으로 구분 된 하나의 XML로 병합하는 방법

function assocArrayToXML($root_element_name,$ar) 
{ 
    $xml = new SimpleXMLElement("<?xml version=\"1.0\"?><{$root_element_name}>  </{$root_element_name}>"); 
    $f = create_function('$f,$c,$a',' 
      foreach($a as $k=>$v) { 
      if(is_array($v)) { 
       $ch=$c->addChild($k); 
       $f($f,$ch,$v); 
      } else { 
       $c->addChild($k,$v); 
      } 
     }'); 
$f($f,$xml,$ar); 
return $xml->asXML(); 
} 

// Include Libraries 
include('services\OrganisationService.php'); 
include('services\AttendeeService.php'); 

// Target Organisation 
$organ_id = 1; 

// Read Organisation Data 
$organServ = new OrganisationService(); 
$organData = $organServ->getOrganisationByID($organ_id); 
$organXml = assocArrayToXML('organisation',$organData); 

// Read Attendees Data (For Organisation) 
$attendServ = new AttendeeService(); 
$attendData = $attendServ->getAllActiveAttendeeByOrg($organ_id); 

$attendXml = ""; 
for ($i=0;$i<count($attendData);$i++) { 
    $attendXml += assocArrayToXML('row',$attendData[$i]); 
} 

//var_dump($attendData); 
header ("Content-Type:text/xml"); 
echo $attendXml; 
?> 
+0

사용중인 PHP의 버전을 알 수는 없지만 5.3 이상인 경우'create_function'보다는 람다/익명 함수를 사용해야합니다 http://php.net/manual/en/functions.anonymous .php – Endophage

답변

0

전체 xml 문서 문자열을 생성 한 연관 배열을 기반으로 트리에서 노드를 분리해야합니다. 재귀 함수를 정의하기 위해 create_function을 사용하지 말고 대신 XML 렌더링을 처리하기위한 클래스를 만드는 것을 고려해보십시오.

관련 문제