현재 위치: > 최신 기사 목록> Array_Map을 사용하여 XML_PARSE가 구문 분석 한 XML 데이터 사용 방법

Array_Map을 사용하여 XML_PARSE가 구문 분석 한 XML 데이터 사용 방법

M66 2025-04-24

PHP에서 XML 데이터 처리는 특히 외부 시스템과 상호 작용할 때 일반적인 작업입니다. XML_PARSE 는 기본 구문 분석 기능이며 Array_Map은 배치 데이터 변환을위한 고차 기능입니다. 이 두 기능을 결합하면 Batch XML 데이터를 효과적으로 처리하고 변환하여 코드의 가독성과 유지 관리를 향상시킬 수 있습니다.

아래에서는이 목표를 달성하는 방법을 보여주기 위해 예제를 사용합니다.

예 : XML 데이터의 배치 처리 및 구조화 된 배열로 변환

간단한 XML 텍스트로 시작하겠습니다.

 <items>
    <item>
        <id>1</id>
        <name>상품A</name>
        <url>http://m66.net/product/1</url>
    </item>
    <item>
        <id>2</id>
        <name>상품B</name>
        <url>http://m66.net/product/2</url>
    </item>
</items>

1 단계 : XML_PARSER를 사용하여 XML을 구문 분석하십시오

 $xmlData = <<<XML
<items>
    <item>
        <id>1</id>
        <name>상품A</name>
        <url>http://m66.net/product/1</url>
    </item>
    <item>
        <id>2</id>
        <name>상품B</name>
        <url>http://m66.net/product/2</url>
    </item>
</items>
XML;

$parser = xml_parser_create();
xml_parse_into_struct($parser, $xmlData, $values, $index);
xml_parser_free($parser);

이는 XML 데이터를 두 개의 배열 (모든 태그에 대한 세부 사항 포함)과 $ index (태그의 색인 위치 포함)의 두 배열로 구문 분석합니다.

2 단계 : 항목 요소를 추출합니다

 $items = [];
foreach ($index['ITEM'] as $i => $pos) {
    $item = [];

    $idPos = $index['ID'][$i];
    $namePos = $index['NAME'][$i];
    $urlPos = $index['URL'][$i];

    $item['id'] = $values[$idPos]['value'];
    $item['name'] = $values[$namePos]['value'];
    $item['url'] = $values[$urlPos]['value'];

    $items[] = $item;
}

이제 우리는 깔끔한 배열 구조를 얻습니다.

 [
    ['id' => '1', 'name' => '상품A', 'url' => 'http://m66.net/product/1'],
    ['id' => '2', 'name' => '상품B', 'url' => 'http://m66.net/product/2'],
]

3 단계 : Array_Map을 사용하여 데이터를 배치로 변환하십시오

각 URL에 ? ref = xml 매개 변수를 추가하고 제품 이름을 대문자로 변환한다고 가정하면 다음을 수행 할 수 있습니다.

 $processedItems = array_map(function($item) {
    $item['name'] = strtoupper($item['name']);
    $item['url'] .= '?ref=xml';
    return $item;
}, $items);

최종 출력 :

 print_r($processedItems);

출력 결과 :

 Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 상품A
            [url] => http://m66.net/product/1?ref=xml
        )

    [1] => Array
        (
            [id] => 2
            [name] => 상품B
            [url] => http://m66.net/product/2?ref=xml
        )
)