Home  >  Article  >  Backend Development  >  How to convert array to xml format in php

How to convert array to xml format in php

PHPz
PHPzOriginal
2023-04-19 11:39:08726browse

PHP is a commonly used programming language that is often used to develop web applications. XML is also a frequently used format in web applications. Converting PHP arrays to XML format enables data to be exchanged and shared between different software.

In this article, we will show how to convert a relatively simple array to XML format using PHP.

The core idea is to convert each array element into an XML element, and convert the attributes and values ​​in the element into XML attributes and values. We can use recursive approach to handle nested arrays.

First, we will define the array to convert:

$data = array(
  "book" => array(
    "title" => "Learning PHP",
    "author" => "David Sklar",
    "publisher" => "O'Reilly Media",
    "edition" => "4th",
    "year" => 2014
  )
);

Now, we need to write a function to convert this array to XML. The following is the code of the function:

function array_to_xml($array, &$xml) {
  foreach ($array as $key => $value) {
    if (is_array($value)) {
      if (is_numeric($key)) {
        $key = 'item' . $key; 
      }
      $subnode = $xml->addChild($key);
      array_to_xml($value, $subnode);
    } else {
      $xml->addChild($key, htmlspecialchars($value));
    }
  }
}

The function is called array_to_xml, which will pass in the array to be converted and a reference to the XML document object used to store XML.

The function creates XML nodes as needed by looping through each element of the array and checking the type of the element (array or string/number type).

If an element is of array type, this function is called recursively and the child node is added to the current node.

If it is a string/numeric type element, it is added directly to the current node.

In this example, the name of the first-level node is "book", so we will use an XML document object to create a root node named "book":

$xml = new SimpleXMLElement('<book/>');

Next , we call the array_to_xml function to convert the array to XML and add it to the XML document:

array_to_xml($data, $xml);

Finally, we will output the XML document:

echo $xml->asXML();

The complete code is as follows:

$data = array(
  "book" => array(
    "title" => "Learning PHP",
    "author" => "David Sklar",
    "publisher" => "O'Reilly Media",
    "edition" => "4th",
    "year" => 2014
  )
);

$xml = new SimpleXMLElement('<book/>');

function array_to_xml($array, &$xml) {
  foreach ($array as $key => $value) {
    if (is_array($value)) {
      if (is_numeric($key)) {
        $key = 'item' . $key; 
      }
      $subnode = $xml->addChild($key);
      array_to_xml($value, $subnode);
    } else {
      $xml->addChild($key, htmlspecialchars($value));
    }
  }
}

array_to_xml($data, $xml);

echo $xml->asXML();

The output after running the code is as follows:

<book>
  <title>Learning PHP</title>
  <author>David Sklar</author>
  <publisher>O'Reilly Media</publisher>
  <edition>4th</edition>
  <year>2014</year>
</book>

As can be seen from the above code, converting an array to XML by PHP is a relatively simple process. As long as you are familiar with the structure of XML and related functions in PHP, you can Can be achieved easily. You can adjust the corresponding code according to actual needs to generate an XML document that suits you.

The above is the detailed content of How to convert array to xml format in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn