(PHP 4, PHP 5, PHP 7, PHP 8)
xml_parse_into_struct — XML veriyi çözümleyip sonucu bir dizi içinde döndürür
$çözümleyici,$veri,&$değerler,&$indis = null
   Bu işlev bir XML belgeyi iki diziye çözümler.  indis
   dizisi, değerler dizisindeki değerlerin konumlarına
   birer gösterici içerir. Bu dizilerin işleve gönderimli aktarılmaları
   gerekir.
  
çözümleyiciXMLParser nesnesi.
veriXML veriyi içeren dizi.
değerlerXML verinin değerlerini içeren dizi.
indis$değerler içindeki uygun değerlerin konumlarına göstericiler içeren bir dizi.
   Başarısızlık durumunda 0, başarı durumunda 1 döner. Bu, false ve true
   olarak ele alınmamalıdır. Dönen değeri === işleci ile karşılaştırın.
  
| Sürüm: | Açıklama | 
|---|---|
| 8.0.0 | ayrıştırıcıartık bir XMLParser
  örneği olabiliyor; evvelce resource türünde geçerli birxmldeğeri kabul ederdi. | 
   Aşağıdaki örnekte dönen dizilerin iç yapısı gösterilmiştir. Basit olarak,
   para etiketi içine note etiketini
   gömüp, bunu çözümledikten sonra üretilen dizileri dökümlüyoruz.
   
Örnek 1 - xml_parse_into_struct() örneği
<?php
$simple = "<para><note>basit örnek</note></para>";
$p = xml_parser_create();
xml_parse_into_struct($p, $simple, $vals, $index);
xml_parser_free($p);
echo "İndis dizisi\n";
print_r($index);
echo "\nDeğerler dizisi\n";
print_r($vals);
?>Çıktı şöyle olur:
İndis dizisi
Array
(
    [PARA] => Array
        (
            [0] => 0
            [1] => 2
        )
    [NOTE] => Array
        (
            [0] => 1
        )
)
Değerler dizisi
Array
(
    [0] => Array
        (
            [tag] => PARA
            [type] => open
            [level] => 1
        )
    [1] => Array
        (
            [tag] => NOTE
            [type] => complete
            [level] => 2
            [value] => basit örnek
        )
    [2] => Array
        (
            [tag] => PARA
            [type] => close
            [level] => 1
        )
)
Olaylarla tetiklenen çözümleme (expat kütüphanesine dayalı olarak) XML belgenin karmaşıklığına bağlı olarak karmaşıklaşabilir. Bu işlev DOM tarzı bir nesne üretmez fakat bir ağaç halinde uygun bir yapı üretir. Bu bakımdan, XML belge içindeki veriyi gösteren nesneler kolayca oluşturulabilir. Amino asitlerden oluşan küçük bir veritabanı olarak aşağıdaki XML belgeyi ele alalım:
Örnek 2 - moldb.xml - küçük bir moleküler bilgi veritabanı
<?xml version="1.0"?>
<moldb>
  <molecule>
      <name>Alanine</name>
      <symbol>ala</symbol>
      <code>A</code>
      <type>hydrophobic</type>
  </molecule>
  <molecule>
      <name>Lysine</name>
      <symbol>lys</symbol>
      <code>K</code>
      <type>charged</type>
  </molecule>
</moldb>
Örnek 3 - parsemoldb.php - moldb.xml dosyasını bir moleküler nesne dizisine çözümler
<?php
class AminoAcid {
    var $name;    // amino asidin ismi
    var $symbol;  // üç harfli simge
    var $code;    // tek harflik kod
    var $type;    // hydrophobic, charged veya neutral
    function __construct ($aa)
    {
        foreach ($aa as $k=>$v)
            $this->$k = $aa[$k];
    }
}
function readDatabase($filename)
{
    // amino asit veritabanını okuyalım
    $data = file_get_contents($filename);
    $parser = xml_parser_create();
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
    xml_parse_into_struct($parser, $data, $values, $tags);
    xml_parser_free($parser);
    // dizileri açalım
    foreach ($tags as $key=>$val) {
        if ($key == "molecule") {
            $molranges = $val;
            // Dizi girdilerindeki her devamlı dizi çifti
            // bir molekülün alt ve üst aralıklarını tanımlar
            for ($i=0; $i < count($molranges); $i+=2) {
                $offset = $molranges[$i] + 1;
                $len = $molranges[$i + 1] - $offset;
                $tdb[] = parseMol(array_slice($values, $offset, $len));
            }
        } else {
            continue;
        }
    }
    return $tdb;
}
function parseMol($mvalues)
{
    for ($i=0; $i < count($mvalues); $i++) {
        $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"];
    }
    return new AminoAcid($mol);
}
$db = readDatabase("moldb.xml");
echo "** Amino Asit Nesneleri Veritabanı:\n";
print_r($db);
?>** Amino Asit Nesneleri Veritabanı:
Array
(
    [0] => aminoacid Object
        (
            [name] => Alanine
            [symbol] => ala
            [code] => A
            [type] => hydrophobic
        )
    [1] => aminoacid Object
        (
            [name] => Lysine
            [symbol] => lys
            [code] => K
            [type] => charged
        )
)
