>백엔드 개발 >PHP 문제 >PHP에서 XML을 배열로 변환하는 방법

PHP에서 XML을 배열로 변환하는 방법

PHPz
PHPz원래의
2023-04-20 15:05:401436검색

웹 개발에서 XML은 데이터 전송 및 저장 형식으로 널리 사용됩니다. XML 형식 데이터를 사용해야 하는 경우 일반적으로 후속 작업을 용이하게 하기 위해 XML 문자열을 배열이나 개체로 변환해야 합니다. PHP에서는 XML 문자열을 배열로 쉽게 변환할 수 있습니다. 이 기사에서는 PHP가 XML을 배열로 변환하는 방법을 소개합니다.

1. XML 형식 소개

XML은 주로 데이터 전송 및 저장에 사용되는 마크업 언어입니다. XML에는 요소와 속성이 포함되어 있습니다. 요소는 일반적으로 다음과 같은 태그로 표시됩니다.

<book>
  <title>PHP从入门到精通</title>
  <price>50</price>
</book>

이 XML 텍스트는 제목 및 가격 하위 요소가 포함된 책 요소를 정의합니다.

Attribute는 다음과 같이 요소에 추가 정보를 추가하는 방법입니다.

<book category="Programming">
  <title>PHP从入门到精通</title>
  <price>50</price>
</book>

이 예에서는 "Programming" 값을 사용하여 book 요소에 대한 Category 속성을 설정합니다.

2. XML을 PHP에서 배열로 변환

PHP는 XML 처리를 위한 많은 함수를 제공하며, 그 중 가장 일반적으로 사용되는 함수는 simplexml_load_string() 및 xml_parse_into_struct()입니다. 아래에서는 이 두 기능의 사용법을 각각 소개합니다.

  1. simplexml_load_string()

simplexml_load_string() 함수는 XML 문자열에서 SimpleXMLElement 객체를 생성할 수 있습니다. 이 객체를 통해 XML의 요소 및 속성에 쉽게 액세스할 수 있으며 SimpleXMLElement 객체를 배열 또는 기타 객체로 변환할 수도 있습니다. 유형. 다음은 simplexml_load_string() 함수를 사용하여 XML을 배열로 변환하는 예입니다.

$xml = '<bookstore>
            <book category="Programming">
                <title>PHP从入门到精通</title>
                <author>张三</author>
                <price>50</price>
            </book>
            <book category="Web Development">
                <title>JavaScript高级编程</title>
                <author>李四</author>
                <price>45</price>
            </book>
        </bookstore>';
        
$data = json_decode(json_encode(simplexml_load_string($xml)), true);
print_r($data);

위 코드를 실행하면 다음과 같이 출력됩니다.

Array
(
    [book] => Array
        (
            [0] => Array
                (
                    [@attributes] => Array
                        (
                            [category] => Programming
                        )
                    [title] => PHP从入门到精通
                    [author] => 张三
                    [price] => 50
                )
            [1] => Array
                (
                    [@attributes] => Array
                        (
                            [category] => Web Development
                        )
                    [title] => JavaScript高级编程
                    [author] => 李四
                    [price] => 45
                )
        )
)

보시다시피 simplexml_load_string() 함수는 XML을 배열로 변환합니다. 여러 배열 배열로 구성된 관계입니다.

  1. xml_parse_into_struct()

xml_parse_into_struct() 함수는 XML 문자열을 배열로 구문 분석합니다. 다음은 xml_parse_into_struct() 함수를 사용하여 XML을 배열로 변환하는 예입니다.

$xml = '<bookstore>
            <book category="Programming">
                <title>PHP从入门到精通</title>
                <author>张三</author>
                <price>50</price>
            </book>
            <book category="Web Development">
                <title>JavaScript高级编程</title>
                <author>李四</author>
                <price>45</price>
            </book>
        </bookstore>';

$p = xml_parser_create();
xml_parse_into_struct($p, $xml, $vals);
xml_parser_free($p);

print_r($vals);

위 코드를 실행하면 출력은 다음과 같습니다.

Array
(
    [0] => Array
        (
            [tag] => BOOKSTORE
            [type] => open
            [level] => 1
        )

    [1] => Array
        (
            [tag] => BOOK
            [type] => open
            [level] => 2
            [attributes] => Array
                (
                    [CATEGORY] => Programming
                )
        )

    [2] => Array
        (
            [tag] => TITLE
            [type] => open
            [level] => 3
        )

    [3] => Array
        (
            [tag] => TITLE
            [type] => close
            [level] => 3
            [value] => PHP从入门到精通
        )

    [4] => Array
        (
            [tag] => AUTHOR
            [type] => open
            [level] => 3
        )

    [5] => Array
        (
            [tag] => AUTHOR
            [type] => close
            [level] => 3
            [value] => 张三
        )

    [6] => Array
        (
            [tag] => PRICE
            [type] => open
            [level] => 3
        )

    [7] => Array
        (
            [tag] => PRICE
            [type] => close
            [level] => 3
            [value] => 50
        )

    [8] => Array
        (
            [tag] => BOOK
            [type] => close
            [level] => 2
        )

    [9] => Array
        (
            [tag] => BOOK
            [type] => open
            [level] => 2
            [attributes] => Array
                (
                    [CATEGORY] => Web Development
                )
        )

    [10] => Array
        (
            [tag] => TITLE
            [type] => open
            [level] => 3
        )

    [11] => Array
        (
            [tag] => TITLE
            [type] => close
            [level] => 3
            [value] => JavaScript高级编程
        )

    [12] => Array
        (
            [tag] => AUTHOR
            [type] => open
            [level] => 3
        )

    [13] => Array
        (
            [tag] => AUTHOR
            [type] => close
            [level] => 3
            [value] => 李四
        )

    [14] => Array
        (
            [tag] => PRICE
            [type] => open
            [level] => 3
        )

    [15] => Array
        (
            [tag] => PRICE
            [type] => close
            [level] => 3
            [value] => 45
        )

    [16] => Array
        (
            [tag] => BOOK
            [type] => close
            [level] => 2
        )

    [17] => Array
        (
            [tag] => BOOKSTORE
            [type] => close
            [level] => 1
        )
)

보시다시피 xml_parse_into_struct() 함수는 XML을 배열로 구문 분석합니다. 여러 배열로 구성된 배열 각 배열이 XML의 요소나 속성을 나타내는 관계형 배열입니다.

3. 변환을 위해 DOMDocument 확장 사용

PHP에는 DOMDocument 확장을 사용하여 XML을 구문 분석하는 방법도 있습니다. DOMDocument는 PHP에 내장된 확장 기능이며 매우 강력합니다. 다음은 DOMDocument를 사용하여 XML 데이터를 변환하는 예입니다.

$xml = '<bookstore>
            <book category="Programming">
                <title>PHP从入门到精通</title>
                <author>张三</author>
                <price>50</price>
            </book>
            <book category="Web Development">
                <title>JavaScript高级编程</title>
                <author>李四</author>
                <price>45</price>
            </book>
        </bookstore>';

$dom = new DOMDocument;
$dom->loadXML($xml);
$data = array();
foreach ($dom->getElementsByTagName('book') as $book) {
    $data[] = array(
        'category' => $book->getAttribute('category'),
        'title' => $book->getElementsByTagName('title')->item(0)->textContent,
        'author' => $book->getElementsByTagName('author')->item(0)->textContent,
        'price' => $book->getElementsByTagName('price')->item(0)->textContent,
    );
}
print_r($data);

위 코드를 실행하면 출력 결과는 다음과 같습니다.

Array
(
    [0] => Array
        (
            [category] => Programming
            [title] => PHP从入门到精通
            [author] => 张三
            [price] => 50
        )

    [1] => Array
        (
            [category] => Web Development
            [title] => JavaScript高级编程
            [author] => 李四
            [price] => 45
        )

)

보시다시피 DOMDocument를 사용하여 XML 데이터를 구문 분석하면 요소와 요소를 쉽게 얻을 수 있습니다. 속성을 XML로 변환한 다음 배열로 변환합니다.

4. 요약

위 내용은 PHP에서 XML을 배열로 변환하는 여러 가지 방법, 즉 simplexml_load_string() 함수, xml_parse_into_struct() 함수 및 DOMDocument 확장 사용입니다. 각 방법에는 적용 가능한 시나리오가 있습니다. 실제 필요에 따라 적절한 방법을 선택하십시오. 물론 어떤 방법을 사용하든 데이터의 정확성과 무결성을 보장하려면 XML의 형식과 사양에 주의를 기울여야 합니다.

위 내용은 PHP에서 XML을 배열로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.