Heim  >  Artikel  >  Backend-Entwicklung  >  So konvertieren Sie XML in ein Array in PHP

So konvertieren Sie XML in ein Array in PHP

PHPz
PHPzOriginal
2023-04-26 09:06:56484Durchsuche

In der Webentwicklung müssen wir häufig einige Daten in Form von XML übertragen und speichern, und die Konvertierung von XML-Daten in Arrays ist auch im tatsächlichen Geschäft eine sehr häufige Anforderung. Als häufig verwendete Web-Programmiersprache bietet PHP auch viele Tools und Funktionen zur Verarbeitung von XML-Daten. In diesem Artikel wird erläutert, wie Sie XML-Daten in PHP in ein Array konvertieren.

  1. Verwendung von SimpleXML

PHP stellt einen Parser namens SimpleXML zur Verfügung, der XML-Daten in PHP-Objekte konvertieren kann. Sie können XML-Daten in PHP in ein Array konvertieren, indem Sie das Objekt in ein Array umwandeln.

$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);
?>

Der obige Code verwendet zunächst XML-Heredoc (<<

  1. DOM verwenden

Eine andere Möglichkeit, XML in ein Array zu analysieren, ist die Verwendung der DOM-Erweiterung von PHP. DOM bietet einige APIs zum Durchlaufen von XML-Dateien. Wir verwenden den folgenden Code:

$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 = new 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);
?>

Wir erstellen zunächst ein DOMDocument-Objekt mit der Methode loadXML() und rufen es dann über die ab getElementsByTagName()-Methode Gehen Sie zu allen Buchknoten, durchlaufen Sie jeden Buchknoten und speichern Sie die Werte seiner Namens-, Autor- und Preisknoten im PHP-Array $result.

  1. XMLReader verwenden

Bei der Verarbeitung großer XML-Dateien ist der Speicherverbrauch von DOM möglicherweise zu hoch, sodass wir den XMLReader-Parser verwenden können, der XML-Dokumente ohne großen Speicherverbrauch lesen und in ein PHP-Array konvertieren kann.

$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);
?>

Wir verwenden die xml()-Methode des XMLReader-Objekts, um die XML-Daten darin einzulesen, und verwenden eine While-Schleife, um jeden Buchknoten iterativ zu lesen und den Wert seines untergeordneten Knotens zu speichern Knoten im PHP-Array $data.

Das Obige sind die spezifischen Codes und Schritte zum Konvertieren von XML-Daten in PHP-Arrays mit drei Methoden. Wenn wir XML-Daten verarbeiten müssen, können wir verschiedene Parser-Tools verwenden, um uns an unterschiedliche Anforderungen und Leistungsanforderungen anzupassen.

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie XML in ein Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn