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

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

PHPz
풀어 주다: 2023-04-26 09:30:21
원래의
528명이 탐색했습니다.

웹 개발에서 일부 데이터를 xml 형식으로 전송하고 저장해야 하는 경우가 종종 있으며, xml 데이터를 배열로 변환하는 것도 실제 비즈니스에서 매우 일반적인 요구 사항입니다. 일반적으로 사용되는 웹 프로그래밍 언어인 PHP는 XML 데이터를 처리하기 위한 많은 도구와 기능도 제공합니다. 이 기사에서는 PHP에서 XML 데이터를 배열로 변환하는 방법을 설명합니다.

  1. SimpleXML 사용

PHP는 XML 데이터를 PHP 객체로 변환할 수 있는 SimpleXML이라는 파서를 제공합니다. 객체를 배열로 캐스팅하여 PHP에서 XML 데이터를 배열로 변환할 수 있습니다.

$xml = <<

  <name>PHP Programming</name>
  <author>John Smith</author>
  <price>15.00</price>
로그인 후 복사
로그인 후 복사
로그인 후 복사


< ;book>

  <name>Web Development</name>
  <author>Jane Doe</author>
  <price>20.00</price>
로그인 후 복사
로그인 후 복사
로그인 후 복사



XML;

$data = simplexml_load_string($xml);
$array = json_decode(json_encode($data), TRUE);

print_r( $array);
?>

위 코드는 먼저 XML heredoc(<<

  1. DOM 사용

xml을 배열로 구문 분석하는 또 다른 방법은 PHP의 DOM 확장을 사용하는 것입니다. DOM은 XML 파일을 탐색하기 위한 몇 가지 API를 제공하며 다음 코드를 사용합니다:

$xml = <<

  <name>PHP Programming</name>
  <author>John Smith</author>
  <price>15.00</price>
로그인 후 복사
로그인 후 복사
로그인 후 복사


  <name>Web Development</name>
  <author>Jane Doe</author>
  <price>20.00</price>
로그인 후 복사
로그인 후 복사
로그인 후 복사



XML;

$doc = 새 DOMDocument();
$doc- >loadXML($xml);

$books = $doc->getElementsByTagName("book");
$result = array();

foreach($books as $book) {
$item = array(

  "name" => $book->getElementsByTagName("name")->item(0)->nodeValue,
  "author" => $book->getElementsByTagName("author")->item(0)->nodeValue,
  "price" => $book->getElementsByTagName("price")->item(0)->nodeValue
로그인 후 복사

);
array_push($result, $item);
}

print_r($result);
?>

먼저 loadXML() 메소드를 사용하여 DOMDocument 객체를 생성한 후 다음을 통해 이를 얻습니다. getElementsByTagName() 메소드 모든 책 노드로 이동하여 각 책 노드를 순회하고 이름, 저자 및 가격 노드의 값을 PHP 배열 $result에 저장합니다.

  1. XMLReader 사용

대용량 xml 파일을 처리할 때 DOM의 메모리 소모가 너무 높을 수 있으므로 메모리를 많이 사용하지 않고 xml 문서를 읽고 PHP 배열로 변환할 수 있는 XMLReader 파서를 채택할 수 있습니다.

$xml = <<

  <name>PHP Programming</name>
  <author>John Smith</author>
  <price>15.00</price>
로그인 후 복사
로그인 후 복사
로그인 후 복사


< ;book>

  <name>Web Development</name>
  <author>Jane Doe</author>
  <price>20.00</price>
로그인 후 복사
로그인 후 복사
로그인 후 복사



XML;

$data = array();
$reader = new XMLReader();
$reader->xml($xml);

while ($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'book') {

  $book = array();
  while ($reader->read()) {
     if ($reader->nodeType == XMLReader::ELEMENT) {
        $name = $reader->name;
        $reader->read();
        $book[$name] = $reader->value;
     } elseif ($reader->nodeType == XMLReader::END_ELEMENT && $reader->name == 'book') {
        array_push($data, $book);
        break;
     }
  }
로그인 후 복사

}
}

print_r($data);
?>

XMLReader 개체의 xml() 메서드를 사용하여 xml 데이터를 읽고 while 루프를 사용하여 각 책 노드를 반복적으로 읽고 해당 하위 노드의 값을 저장합니다. PHP 배열 $data의 노드.

위는 세 가지 방법을 사용하여 xml 데이터를 PHP 배열로 변환하는 구체적인 코드와 단계입니다. xml 데이터를 처리해야 할 때 다양한 요구 사항과 성능 요구 사항에 맞게 다양한 파서 도구를 사용하도록 선택할 수 있습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿