현재 위치: > 최신 기사 목록> XML_PARSE_INTO_STRUCT 기능은 속성 정보에서 XML 태그를 어떻게 구별하고 추출합니까?

XML_PARSE_INTO_STRUCT 기능은 속성 정보에서 XML 태그를 어떻게 구별하고 추출합니까?

M66 2025-06-12

PHP에서 XML을 처리하는 일반적인 방법 중 하나는 XML_PARSE_INTO_STRUCT () 함수를 사용하는 것입니다. 이 기능은 XML 문서를 구조화 된 배열로 구문 분석 할 수 있으며, 이는 태그의 계층 적 관계를 포함 할뿐만 아니라 태그 속성, 값 및 유형을 추출합니다. 이 기사에서는이 기능을 통해 속성 정보에서 XML 태그를 구별하고 추출하는 방법을 설명하고 예제와 함께 설명합니다.

기능 프로토 타입

 int xml_parse_into_struct(
    XMLParser $parser,
    string $data,
    array &$values,
    array &$index = null
);
  • $ parser : XML 파서 리소스.

  • $ 데이터 : XML 데이터를 구문 분석합니다.

  • $ 값 : 구조화 된 출력 배열.

  • $ index : 인덱싱 레이블을위한 선택적 배열.

레이블 및 속성 정보를 추출하는 방법은 무엇입니까?

XML_PARSE_INTO_STRUCT () 의 핵심은 모든 태그, 텍스트 노드, CDATA 및 기타 정보를 순서대로 $ 값 배열에 작성한다는 것입니다. 배열의 각 항목은 연관 배열이며 주요 필드에는 다음이 포함됩니다.

  • 태그 : 태그 이름입니다.

  • 유형 : 노드 유형 (예 : 개방 , 닫기 , 완전 , cdata 등).

  • : 태그에 포함 된 텍스트 값 (있는 경우).

  • 속성 : 태그의 속성은 연관 배열 (속성이있는 경우)으로 존재합니다.

예 : XML이 포함 된 속성을 구문 분석합니다

다음 XML이 있다고 가정합니다.

 <books>
    <book id="1" category="fiction">
        <title>Book One</title>
    </book>
    <book id="2" category="non-fiction">
        <title>Book Two</title>
    </book>
</books>

구문 분석에는 다음 PHP 코드를 사용할 수 있습니다.

 <?php
$xml = <<<XML
<books>
    <book id="1" category="fiction">
        <title>Book One</title>
    </book>
    <book id="2" category="non-fiction">
        <title>Book Two</title>
    </book>
</books>
XML;

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

echo "<pre>";
print_r($values);
echo "
"; ?>

구문 분석 후 $ 값 의 내용은 다음과 같습니다.

 Array
(
    [0] => Array
        (
            [tag] => BOOKS
            [type] => open
        )

    [1] => Array
        (
            [tag] => BOOK
            [type] => open
            [attributes] => Array
                (
                    [ID] => 1
                    [CATEGORY] => fiction
                )
        )

    [2] => Array
        (
            [tag] => TITLE
            [type] => complete
            [value] => Book One
        )

    [3] => Array
        (
            [tag] => BOOK
            [type] => close
        )

    [4] => Array
        (
            [tag] => BOOK
            [type] => open
            [attributes] => Array
                (
                    [ID] => 2
                    [CATEGORY] => non-fiction
                )
        )

    [5] => Array
        (
            [tag] => TITLE
            [type] => complete
            [value] => Book Two
        )

    [6] => Array
        (
            [tag] => BOOK
            [type] => close
        )

    [7] => Array
        (
            [tag] => BOOKS
            [type] => close
        )
)

분석 지침

  • 태그에는 개방형 유형 항목이 있습니다.

  • 속성 정보는 속성 키에 포함되며 연관 배열 형식으로 존재합니다.

  • 텍스트 값 (예 : 책 제목)은 키에 존재하며 태그 유형이 완료 됩니다.

  • 태그 이름은 항상 자본화되며 XML_PARSE_INTO_STRUCT () 의 기본 동작입니다.

속성 정보 추출

$ 값 배열을 반복하여 속성으로 모든 태그를 추출 할 수 있습니다. 예를 들어:

 foreach ($values as $entry) {
    if (isset($entry['attributes'])) {
        echo "Tag: {$entry['tag']}\n";
        foreach ($entry['attributes'] as $attrName => $attrValue) {
            echo "  $attrName => $attrValue\n";
        }
    }
}

주목해야 할 것

  • 태그 이름과 속성 이름은 자동으로 대문자로 변환됩니다.

  • 이 함수는 태그의 계층 구조 정보를 유지하지는 않지만 발생 순서로 만 배열됩니다.

  • 간단한 XML에 적합합니다.보다 복잡한 구조 처리가 필요한 경우 DOM 또는 SimpleXML이 권장됩니다.

요약