웹 개발에서 일부 데이터를 xml 형식으로 전송하고 저장해야 하는 경우가 종종 있으며, xml 데이터를 배열로 변환하는 것도 실제 비즈니스에서 매우 일반적인 요구 사항입니다. 일반적으로 사용되는 웹 프로그래밍 언어인 PHP는 XML 데이터를 처리하기 위한 많은 도구와 기능도 제공합니다. 이 기사에서는 PHP에서 XML 데이터를 배열로 변환하는 방법을 설명합니다.
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(<< xml을 배열로 구문 분석하는 또 다른 방법은 PHP의 DOM 확장을 사용하는 것입니다. DOM은 XML 파일을 탐색하기 위한 몇 가지 API를 제공하며 다음 코드를 사용합니다: $xml = << $doc = 새 DOMDocument(); $books = $doc->getElementsByTagName("book"); foreach($books as $book) { ); print_r($result); 먼저 loadXML() 메소드를 사용하여 DOMDocument 객체를 생성한 후 다음을 통해 이를 얻습니다. getElementsByTagName() 메소드 모든 책 노드로 이동하여 각 책 노드를 순회하고 이름, 저자 및 가격 노드의 값을 PHP 배열 $result에 저장합니다. 대용량 xml 파일을 처리할 때 DOM의 메모리 소모가 너무 높을 수 있으므로 메모리를 많이 사용하지 않고 xml 문서를 읽고 PHP 배열로 변환할 수 있는 XMLReader 파서를 채택할 수 있습니다. $xml = << $data = array(); while ($reader->read()) { } print_r($data); XMLReader 개체의 xml() 메서드를 사용하여 xml 데이터를 읽고 while 루프를 사용하여 각 책 노드를 반복적으로 읽고 해당 하위 노드의 값을 저장합니다. PHP 배열 $data의 노드. 위는 세 가지 방법을 사용하여 xml 데이터를 PHP 배열로 변환하는 구체적인 코드와 단계입니다. xml 데이터를 처리해야 할 때 다양한 요구 사항과 성능 요구 사항에 맞게 다양한 파서 도구를 사용하도록 선택할 수 있습니다. 위 내용은 PHP에서 XML을 배열로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요! <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- >loadXML($xml);
$result = array();
$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);
}
?>
<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;
$reader = new XMLReader();
$reader->xml($xml);
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;
}
}
}
?>