개발! 딱 깔끔하고 센스있게!

XML 사이 에 PHP 관련 배열 전달 하기 본문

개발 스크랩 메모/PHP

XML 사이 에 PHP 관련 배열 전달 하기

렉사이 2020. 12. 8. 22:36

PHP 관련 배열 을 XML 로 보 내 거나 XML 로 보 내 는 간단 한 방법 이 없 습 니까?예 를 들 어 저 는 다음 과 같은 배열 이 있 습 니 다.

$items = array("1", "2", array( "item3.1" => "3.1", "item3.2" => "3.2" "isawesome" => true ) ); 

나 는 어떻게 그것 을 가능 한 한 적은 몇 줄 의 XML 과 유사 한 내용 으로 바 꾼 다음 에 다시 돌아 갈 수 있 습 니까?

 1 2  3.1 3.2 true   

나 는 배열 의 구 조 를 약간 바 꿔 야 하 는 지, 또는 출력 하 는 XML 가 위의 예시 와 다 르 는 지 에 대해 서 는 전혀 신경 쓰 지 않 는 다.

항상 PHP 의 XMLReader 와 XMLWriter 를 사용 하려 고 시 도 했 지만 문서 가 너무 엉망 이 라 서 제 가 생각 하 는 코드 가 아 닌 것 같 습 니 다:

$xml = SomeXMLWriter::writeArrayToXml($items); $array = SomeXMLWriter::writeXmlToArray($xml); 

사용자 정의 종 류 를 만 들 지 않 으 면 PHP 배열 의 기본 XML 덤 프 를 받 습 니 다.

이것 보다 더 어 려 울 까요?

나 는 배 를 먹 는 것 을 가능 한 한 피한다.

나 는 배치 상의 번 거 로 움 외 에 내 가 사용 한 모든 가방 을 고집 해 본 적 이 없다.

대답 하 다.

패 어 백 을 사용 하지 않 는 사용자 에 게 PHP 5 가 설치 되 어 있 습 니 다.

이것 은 나 에 게 효과 가 있다:

/** * Build A XML Data Set * * @param array $data Associative Array containing values to be parsed into an XML Data Set(s) * @param string $startElement Root Opening Tag, default fx_request * @param string $xml_version XML Version, default 1.0 * @param string $xml_encoding XML Encoding, default UTF-8 * @return string XML String containig values * @return mixed Boolean false on failure, string XML result on success */ public function buildXMLData($data, $startElement = 'fx_request', $xml_version = '1.0', $xml_encoding = 'UTF-8') { if(!is_array($data)) { $err = 'Invalid variable type supplied, expected array not found on line '.__LINE__." in Class: ".__CLASS__." Method: ".__METHOD__; trigger_error($err); if($this->_debug) echo $err; return false; //return false error occurred } $xml = new XmlWriter(); $xml->openMemory(); $xml->startDocument($xml_version, $xml_encoding); $xml->startElement($startElement); /** * Write XML as per Associative Array * @param object $xml XMLWriter Object * @param array $data Associative Data Array */ function write(XMLWriter $xml, $data) { foreach($data as $key => $value) { if(is_array($value)) { $xml->startElement($key); write($xml, $value); $xml->endElement(); continue; } $xml->writeElement($key, $value); } } write($xml, $data); $xml->endElement();//write end element //Return the XML results return $xml->outputMemory(true); } 
Comments