반응형
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
반응형
'developer tip' 카테고리의 다른 글
Java InputStream 닫기 (0) | 2020.11.20 |
---|---|
SpringJUnit4ClassRunner에 대한 log4j.properties를 구성하는 방법은 무엇입니까? (0) | 2020.11.20 |
getHeight는 모든 Android UI 개체에 대해 0을 반환합니다. (0) | 2020.11.20 |
큰 파일의 줄 수 (0) | 2020.11.20 |
자바 스크립트를 사용하여 로케일 간단한 날짜 형식 가져 오기 (0) | 2020.11.19 |