>  기사  >  백엔드 개발  >  XML 데이터를 PHP에서 배열로 변환하는 방법(두 가지 방법)

XML 데이터를 PHP에서 배열로 변환하는 방법(두 가지 방법)

PHPz
PHPz원래의
2023-04-14 17:40:271743검색

PHP는 서버 측 프로그래밍에 널리 사용되는 프로그래밍 언어인 반면, XML은 많은 응용 프로그램에서 데이터를 저장하고 전송하는 데 사용되는 확장 가능한 마크업 언어입니다. PHP에서는 XML을 배열로 쉽게 변환할 수 있습니다. 이 기술을 사용하면 XML 데이터를 쉽게 처리하고 조작할 수 있습니다.

PHP는 XML을 배열로 변환하는 여러 가지 방법을 제공합니다. 아래에서는 일반적으로 사용되는 두 가지 방법을 소개합니다.

방법 1: 간단한 XML 확장 사용

간단한 XML 확장은 PHP와 함께 제공되는 확장으로, XML 데이터를 PHP 배열로 빠르게 변환하는 데 도움이 됩니다. XML 문자열을 기반으로 SimpleXMLElement 객체를 반환하는 simplexml_load_string() 함수만 호출하면 객체의 속성과 메서드를 통해 XML 데이터를 얻을 수 있습니다.

다음은 간단한 예입니다.

$xmlString = '<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
</bookstore>';

$xml = simplexml_load_string($xmlString);

print_r($xml);

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

SimpleXMLElement Object
(
    [book] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [category] => COOKING
                        )

                    [title] => Everyday Italian
                    [author] => Giada De Laurentiis
                    [year] => 2005
                    [price] => 30.00
                )

            [1] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [category] => CHILDREN
                        )

                    [title] => Harry Potter
                    [author] => J.K. Rowling
                    [year] => 2005
                    [price] => 29.99
                )
        )
)

SimpleXMLElement 객체가 배열로 변환되고, 각 노드가 배열의 요소가 되며, 해당 속성도 키 값 쌍.

방법 2: PHP DOM 확장 사용

PHP DOM 확장은 XML 및 HTML 문서를 처리하고 조작하는 데 사용할 수 있는 널리 사용되는 PHP 확장입니다. 우리는 XML 파일을 DOM 객체로 변환하기 위해 제공되는 메소드를 사용할 수 있으며, DOM 관련 메소드를 통해 이를 배열로 변환할 수 있습니다.

다음은 간단한 예입니다.

$xmlString = '<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
</bookstore>';

$dom = new DOMDocument();
$dom->loadXML($xmlString);
$books = $dom->getElementsByTagName('book');
$data = array();

foreach ($books as $book) {
    $bookData = array(
        'category' => $book->getAttribute('category'),
        'title' => $book->getElementsByTagName('title')->item(0)->nodeValue,
        'author' => $book->getElementsByTagName('author')->item(0)->nodeValue,
        'year' => $book->getElementsByTagName('year')->item(0)->nodeValue,
        'price' => $book->getElementsByTagName('price')->item(0)->nodeValue
    );

    $data[] = $bookData;
}

print_r($data);

출력은 다음과 같습니다.

Array
(
    [0] => Array
        (
            [category] => COOKING
            [title] => Everyday Italian
            [author] => Giada De Laurentiis
            [year] => 2005
            [price] => 30.00
        )

    [1] => Array
        (
            [category] => CHILDREN
            [title] => Harry Potter
            [author] => J.K. Rowling
            [year] => 2005
            [price] => 29.99
        )
)

PHP DOM 확장을 사용하면 XML 파일을 DOM 개체로 변환하고 DOM 개체에서 제공하는 메서드를 사용할 수 있음을 알 수 있습니다. 각각을 얻으려면 노드의 값이 최종적으로 PHP 배열로 변환됩니다.

요약

간단한 XML 확장을 사용하든, PHP DOM 확장을 사용하든, XML 파일을 PHP 배열로 쉽게 변환할 수 있습니다. 우리는 필요에 따라 적절한 방법을 선택하기만 하면 됩니다. PHP 배열을 사용하면 XML 데이터를 쉽게 처리하고 조작할 수 있습니다.

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

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