현재 위치: > 최신 기사 목록> json_encode를 사용하여 XML_PARSE 결과를 JSON 형식으로 변환하는 방법

json_encode를 사용하여 XML_PARSE 결과를 JSON 형식으로 변환하는 방법

M66 2025-04-24

PHP 개발에서 XML 데이터 처리는 특히 레거시 시스템에 도킹하거나 특정 API를 읽을 때 일반적인 요구 사항입니다. JSON은 현재 더 인기가 있지만 XML에는 여전히 많은 데이터가 제공됩니다. 프론트 엔드 처리 또는 후속 처리를 용이하게하려면 XML을 JSON 형식으로 변환해야합니다.

이 기사에서는 PHP의 XML_PARSE 기능을 사용하여 XML 문자열을 배열 구조로 구문 분석 한 다음 JSON_ENCODE를 통해 JSON 형식으로 변환합니다.

1 단계 : XML 데이터를 준비합니다

먼저 원격 주소 (예 : https://api.m66.net/data.xml )에서 얻은 응답을 시뮬레이션하기 위해 샘플 XML 데이터를 준비합니다.

 $xml_data = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book>
        <title>PHP 프로그래밍 연습</title>
        <author>장 산</author>
        <year>2021</year>
    </book>
    <book>
        <title>심층적 인 이해 XML</title>
        <author>Li Si</author>
        <year>2020</year>
    </book>
</books>
XML;

2 단계 : XML을 배열로 구문 분석합니다

XML_PARSE 는 저수준 XML 구문 분석 기능입니다. 일반적으로 xml_parser_create 및 콜백 함수를 결합하여 XML 컨텐츠를 배열로 변환합니다. 다음은 XML을 연관 배열로 변환하는 간단한 구문 분석 기능입니다.

 function xml_to_array($xml_string) {
    $parser = xml_parser_create();
    xml_parse_into_struct($parser, $xml_string, $values, $index);
    xml_parser_free($parser);

    $result = [];
    $stack = [];

    foreach ($values as $val) {
        switch ($val['type']) {
            case 'open':
                $tag = $val['tag'];
                $child = [];
                if (!empty($val['attributes'])) {
                    $child = $val['attributes'];
                }
                array_push($stack, [&$result, $tag]);
                if (!isset($result[$tag])) {
                    $result[$tag] = [];
                }
                $result[$tag][] = $child;
                break;

            case 'complete':
                $tag = $val['tag'];
                $value = isset($val['value']) ? $val['value'] : '';
                if (!isset($result[$tag])) {
                    $result[$tag] = [];
                }
                $result[$tag][] = $value;
                break;

            case 'close':
                array_pop($stack);
                break;
        }
    }

    return $result;
}

참고 : 위의 코드는 사용을 보여주는 것이며 가능한 모든 XML 구조를 고려하지는 않습니다. SimpleXML 또는 DomDocument와 같은보다 완전한 파서를 생산 환경에서 사용하는 것이 좋습니다.

3 단계 : json_encode를 사용하여 JSON 형식으로 변환하십시오

배열 구조를 사용하면 JSON으로 변환하는 것이 매우 간단합니다. JSON_ENCODE를 사용하십시오.

 $parsed_array = xml_to_array($xml_data);
$json_result = json_encode($parsed_array, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

echo $json_result;

출력 결과는 대략 다음과 같습니다.

 {
    "BOOK": [
        {
            "TITLE": "PHP 프로그래밍 연습",
            "AUTHOR": "장 산",
            "YEAR": "2021"
        },
        {
            "TITLE": "심층적 인 이해 XML",
            "AUTHOR": "Li Si",
            "YEAR": "2020"
        }
    ]
}

고급 제안 : 간단한 렉스 미 또는 DOM을 사용하여 변환을 수행하십시오

XML_PARSE는 기본 제어를 제공하지만 복잡한 XML을 다룰 때 번거로운 것 같습니다. php에서 simplexml 사용을 고려하십시오.

 $xml = simplexml_load_string($xml_data);
$json = json_encode($xml, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
echo $json;

이 방법은 명확한 구조를 가진 XML에 더 간단하고 더 적합합니다.