Home >Backend Development >PHP Problem >How to convert XML data to array in php (two methods)
PHP is a programming language widely used for server-side programming, while XML is an extensible markup language used by many applications to store and transmit data. In PHP, we can easily convert XML into an array. Using this technology, we can easily process and manipulate XML data.
PHP provides a variety of methods to convert XML into arrays. Below we will introduce two commonly used methods.
Simple XML extension is an extension that comes with PHP, which can help us quickly convert XML data into PHP arrays. We only need to call the simplexml_load_string() function, which will return a SimpleXMLElement object based on the XML string. We can obtain XML data through the properties and methods of the object.
The following is a simple example:
$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);
The output result is as follows:
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 ) ) )
We can see that the SimpleXMLElement object is converted into an array, and each node becomes An element of an array, its attributes also become a key-value pair.
PHP DOM extension is a widely used PHP extension that can be used to process and manipulate XML and HTML documents. We can use the methods it provides to convert XML files into DOM objects, and then convert them into arrays through DOM related methods.
The following is a simple example:
$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);
The output is as follows:
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 ) )
We can see that using the PHP DOM extension, we can convert the XML file into a DOM Object, and use the methods provided by the DOM object to obtain the value of each node, and finally convert it into a PHP array.
Summary
Whether you use a simple XML extension or a PHP DOM extension, you can easily convert XML files into PHP arrays. We just need to choose the appropriate method according to our needs. Using PHP arrays, we can easily process and manipulate XML data.
The above is the detailed content of How to convert XML data to array in php (two methods). For more information, please follow other related articles on the PHP Chinese website!