PHP에서 XML을 연관 배열로 변환

Convert Xml Associative Array Php



XML(Extensible Markup Language)은 데이터를 사람이 읽을 수 있는 형식으로 저장하는 데 사용되는 마크업 언어의 한 유형입니다. 다른 마크업 언어와 다릅니다. 이 언어의 모든 태그는 사용자가 정의합니다. XML을 사용하는 것은 데이터를 저장하는 데 데이터베이스를 사용하지 않으려는 경우 소량의 데이터를 저장하는 더 나은 솔루션입니다. XML 문서의 데이터는 PHP 스크립트를 사용하여 모든 웹 응용 프로그램에서 쉽게 액세스하고 사용할 수 있습니다. XML 문서를 구문 분석하여 연관 배열에 저장하는 방법은 이 자습서에 나와 있습니다.

필요한 기능

일부 내장 함수는 XML 콘텐츠를 연관 PHP 배열로 변환하는 데 사용됩니다. 다른 기능의 목적은 아래에 설명되어 있습니다.







file_get_contents():



이 함수는 XML 데이터를 변환하여 문자열 데이터를 반환합니다. XML 파일 이름을 인수로 사용합니다.



simplexml_load_string():





이 함수는 XML 문자열 데이터를 변환하여 XML 개체를 반환합니다. XML 문자열 데이터를 인수로 사용합니다.

simplexml_load_file():



이 함수는 XML 파일 내용을 변환하여 XML 객체를 반환합니다. XML 파일 이름을 인수로 사용합니다.

SimpleXML요소():

XML 데이터에서 XML 개체를 만드는 데 사용됩니다. XML 콘텐츠 값을 인수로 사용합니다.

json_encode():

XML 객체를 변환하여 JSON 객체를 반환합니다. XML 개체 변수를 인수로 사용합니다.

json_decode():

JSON 데이터를 변환하여 연관 PHP 배열을 반환합니다. JSON 객체 변수를 인수로 사용합니다.

XML 파일 생성

XML 데이터를 연관 PHP 배열로 변환하는 방법을 알기 위해서는 XML 파일을 생성하거나 스크립트에서 XML 데이터를 정의해야 합니다. 다음 내용으로 Courses.xml이라는 XML 파일을 생성하고 PHP 스크립트가 있는 위치에 저장합니다. 파일은 상위 요소 아래에 하위 요소를 포함합니다. 따라서 다음 XML 파일을 PHP 배열로 변환한 후 2차원 연관 배열이 생성됩니다.

코스.xml

버전='1.0'?>
>
>웹 프로그래밍>
>6 개월>
>
>
>PHP 프로그래밍의 즐거움>
>앨런 포브스>
>매화섬>
>
>
>PHP& MySQL 초보자에서 닌자로
톰 버틀러 & 케빈 양크
사이트포인트


헤드 퍼스트 PHP 및 MySQL
린 비글리 & 마이클 모리슨
오라일리


예-1: 오류를 확인하지 않고 XML 파일 내용을 연관 배열로 변환

다음 스크립트는 file_get_contents() 및 simplexml_load_string() 함수를 사용하여 XML 객체를 생성하는 방법을 보여줍니다. 여기서는 이전에 생성한 변환을 위해courses.xml 파일을 사용합니다. 다음으로 json_encode() 및 json_decode() 함수를 사용하여 XML 파일 내용을 변환한 후 연관 배열을 가져옵니다. XML 콘텐츠에 오류가 없으면 다음 스크립트에서 오류가 표시되지 않습니다. 여기 |_+_| 태그는 형식화된 방식으로 배열을 인쇄하는 데 사용됩니다.



//기존 XML 파일 정의
$xml = '코스.xml';

//XML 파일의 전체 내용을 XML 문자열로 읽습니다.
$xml데이터 = file_get_contents ($xml);

//XML 문자열 데이터를 XML 객체로 변환
$xml객체 = simplexml_load_string ($xml데이터);

//XML 객체를 JSON 객체로 변환
$json객체 = json_encode ($xml객체);

//JSON 객체를 연관 배열로 변환
$assArray = json_decode ($json객체, 진실);

//연관 배열의 구조를 출력
던졌다 '
  
';

?>

산출:

PHP 스크립트를 실행하면 다음 출력이 나타납니다. 여기에서 XML 파일인courses.xml의 내용을 기반으로 2차원 배열이 생성됩니다.

예-2: XML 파일 내용을 검사 오류가 있는 연관 배열로 변환

XML을 연관 배열로 변환할 때 오류를 확인하는 것이 좋습니다. 스크립트에서 오류 검사가 구현된 경우 코더가 코드를 디버그하는 데 도움이 됩니다. 다음 스크립트는 오류 처리와 함께 simplexml_load_file() 함수를 사용하여 XML 파일 내용을 연관 배열로 변환하는 방법을 보여줍니다. libxml_use_internal_errors() 함수는 오류 처리를 활성화하기 위해 TRUE 값과 함께 사용됩니다. 스크립트에 사용된 XML 파일 내용에 오류가 있으면 simplexml_load_file() 함수는 false를 반환하고 libxml_get_errors() 함수를 사용하여 오류 메시지를 인쇄합니다. XML 파일에 오류가 없으면 파일 내용이 2차원 연관 배열로 제대로 변환됩니다.



//사용자 오류 처리 활성화
libxml_use_internal_errors (진실);

//XML 객체 생성
$ objXml = simplexml_load_file ('코스.xml');

//XML 객체가 false를 반환하면 오류 인쇄
만약 ($ objXml === 거짓) {
던졌다 'XML 파일을 구문 분석하는 동안 오류가 발생했습니다.N';
각각( libxml_get_errors () 같이 $ 오류) {
던졌다 $ 오류->메세지;
}
출구 ;
}

//XML 객체를 JSON 객체로 변환
$ objJson = json_encode ($ objXml);
//JSON 객체를 연관 배열로 변환
$assarr = json_decode ($ objJson, 진실);

//연관 배열의 구조를 출력
던졌다 '
';  
print_r ($assArray);
echo '
'
;

?>

산출:

PHP 스크립트를 실행하면 다음 출력이 나타납니다. 여기서 XML 파일에는 오류가 없습니다. 따라서 이전 예제와 같이 XML 파일인courses.xml의 내용을 기반으로 2차원 배열이 생성되었습니다.

예-3: XML 콘텐츠를 연관 배열로 변환

다음 스크립트는 SimpleXMLElement() 함수를 사용하여 XML 데이터를 연관 배열로 변환하는 방법을 보여줍니다. 스크립트에서 XML 콘텐츠는 SimpleXMLElement() 함수의 인수로 사용되는 $xml이라는 변수에 저장됩니다. 다음으로 json_encode() 및 json_decode() 함수를 사용하여 XML 파일 내용을 변환한 후 연관 배열을 가져옵니다.



//XML 변수 정의
$xml = <<


[이메일 보호됨]

12 / A, 단몬디
다카



[이메일 보호됨]

156, 모티브
다카



[이메일 보호됨]

21 / B, 모그바자르
다카



XML
;

//XML 객체 생성
$xml객체 = 새로운SimpleXML요소($xml);
//JSON 객체 생성
$json객체 = json_encode ($xml객체);
//JSON 객체를 연관 배열로 변환
$assArray = json_decode ($json객체, 진실);

//연관 배열의 구조를 출력
던졌다 '
';  
print_r ($assarr);
echo '
'
;

?>

산출:

PHP 스크립트를 실행하면 다음 출력이 나타납니다. 여기에서는 XML 변수 $xml의 내용을 기반으로 2차원 배열이 생성됩니다.

결론:

XML 콘텐츠를 이 자습서에 표시된 연관 배열로 변환하는 세 가지 다른 방법이 있습니다. 이것은 독자들이 XML 데이터로 작업하는 방법과 PHP 스크립트를 사용하여 XML 콘텐츠에서 데이터를 쉽게 구문 분석하는 방법을 아는 데 도움이 될 것입니다.