반응형
SimpleXML 개체를 배열로 변환하는 방법
여기서 SimpleXML 개체를 배열로 변환하는 기능을 발견했습니다.
/**
* function object2array - A simpler way to transform the result into an array
* (requires json module).
*
* This function is part of the PHP manual.
*
* The PHP manual text and comments are covered by the Creative Commons
* Attribution 3.0 License, copyright (c) the PHP Documentation Group
*
* @author Diego Araos, diego at klapmedia dot com
* @date 2011-02-05 04:57 UTC
* @link http://www.php.net/manual/en/function.simplexml-load-string.php#102277
* @license http://www.php.net/license/index.php#doc-lic
* @license http://creativecommons.org/licenses/by/3.0/
* @license CC-BY-3.0 <http://spdx.org/licenses/CC-BY-3.0>
*/
function object2array($object)
{
return json_decode(json_encode($object), TRUE);
}
XML 문자열은 다음과 같습니다.
function xmlstring2array($string)
{
$xml = simplexml_load_string($string, 'SimpleXMLElement', LIBXML_NOCDATA);
$array = json_decode(json_encode($xml), TRUE);
return $array;
}
꽤 잘 먹히긴 하는데 좀 허술한 것 같아요?보다 효율적이고 견고한 방법이 있습니까?
SimpleXML 오브젝트는 PHP의 ArrayAccess 인터페이스를 사용하기 때문에 어레이에 충분히 가깝다는 것을 알고 있지만, 다차원 어레이를 사용한 어레이로 사용하기에는 아직 적합하지 않습니다(루핑).
도와주셔서 감사합니다.
PHP 매뉴얼 코멘트에는 다음과 같은 내용이 다음과 같이 기재되어 있습니다.
/**
* function xml2array
*
* This function is part of the PHP manual.
*
* The PHP manual text and comments are covered by the Creative Commons
* Attribution 3.0 License, copyright (c) the PHP Documentation Group
*
* @author k dot antczak at livedata dot pl
* @date 2011-04-22 06:08 UTC
* @link http://www.php.net/manual/en/ref.simplexml.php#103617
* @license http://www.php.net/license/index.php#doc-lic
* @license http://creativecommons.org/licenses/by/3.0/
* @license CC-BY-3.0 <http://spdx.org/licenses/CC-BY-3.0>
*/
function xml2array ( $xmlObject, $out = array () )
{
foreach ( (array) $xmlObject as $index => $node )
$out[$index] = ( is_object ( $node ) ) ? xml2array ( $node ) : $node;
return $out;
}
도움이 될 거야그러나 XML을 배열로 변환하면 존재하는 모든 속성이 손실되므로 XML로 돌아가서 동일한 XML을 가져올 수 없습니다.
그저.(array)
simplexml 오브젝트 앞 코드에 없습니다.
...
$xml = simplexml_load_string($string, 'SimpleXMLElement', LIBXML_NOCDATA);
$array = json_decode(json_encode((array)$xml), TRUE);
^^^^^^^
...
언급URL : https://stackoverflow.com/questions/6167279/converting-a-simplexml-object-to-an-array
반응형
'source' 카테고리의 다른 글
mysql은 내부 또는 외부 명령어, 프로그램 또는 배치로 인식되지 않습니다. (0) | 2023.01.22 |
---|---|
boto3를 사용하여 버킷 내용 나열 (0) | 2023.01.22 |
Python: '사전'이 비어 있는지 확인하는 것이 작동하지 않는 것 같습니다. (0) | 2023.01.22 |
버튼을 클릭해서 PHP 함수를 호출하는 방법 (0) | 2023.01.22 |
포괄적인 초보자용 virtualenv 튜토리얼? (0) | 2023.01.22 |