xml_parse_into_struct
PHP 4, PHP 5, PHP 7, PHP 8
xml_parse_into_struct - Parse XML data into an array structure
Example #1 xml_parse_into_struct example
tag, and then we parse this and print out
the structures generated:
Result: Index array
Array
(
[PARA] => Array
(
[0] => 0
[1] => 2
)
[NOTE] => Array
(
[0] => 1
)
)
Vals array
Array
(
[0] => Array
(
[tag] => PARA
[type] => open
[level] => 1
)
[1] => Array
(
[tag] => NOTE
[type] => complete
[level] => 2
[value] => simple note
)
[2] => Array
(
[tag] => PARA
[type] => close
[level] => 1
)
)
Example #2 parsemoldb.php - parses moldb.xml into an array of
molecular objects
And some code to parse the document and generate the appropriate
objects:
<?php
class AminoAcid {
var $name; // aa name
var $symbol; // three letter symbol
var $code; // one letter code
var $type; // hydrophobic, charged or neutral
function __construct ($aa)
{
foreach ($aa as $k=>$v)
$this->$k = $aa[$k];
}
}
function readDatabase($filename)
{
// read the XML database of aminoacids
$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);
// loop through the structures
foreach ($tags as $key=>$val) {
if ($key == "molecule") {
$molranges = $val;
// each contiguous pair of array entries are the
// lower and upper range for each molecule definition
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 "** Database of AminoAcid objects:\n";
print_r($db);
Execute
Code
PHP Version:
8.3.14 8.2.26 8.1.31
8.0.30 7.4.33 7.3.33 7.2.34 7.1.33 7.0.33 5.6.40 5.5.38 5.4.45 5.3.29 5.2.17 5.1.6 5.0.5 4.4.9 4.3.11 4.2.3 4.1.2 4.0.6
8.4.0
8.3.14 8.3.13 8.3.12 8.3.11 8.3.10 8.3.9 8.3.8 8.3.7 8.3.6 8.3.5 8.3.4 8.3.3 8.3.2 8.3.1 8.3.0
8.2.26 8.2.25 8.2.24 8.2.23 8.2.22 8.2.21 8.2.20 8.2.19 8.2.18 8.2.17 8.2.16 8.2.15 8.2.14 8.2.13 8.2.12 8.2.11 8.2.10 8.2.9 8.2.8 8.2.7 8.2.6 8.2.5 8.2.4 8.2.3 8.2.2 8.2.1 8.2.0
8.1.31 8.1.30 8.1.29 8.1.28 8.1.27 8.1.26 8.1.25 8.1.24 8.1.23 8.1.22 8.1.21 8.1.20 8.1.19 8.1.18 8.1.17 8.1.16 8.1.15 8.1.14 8.1.13 8.1.12 8.1.11 8.1.10 8.1.9 8.1.8 8.1.7 8.1.6 8.1.5 8.1.4 8.1.3 8.1.2 8.1.1 8.1.0
8.0.30 8.0.29 8.0.28 8.0.27 8.0.26 8.0.25 8.0.24 8.0.23 8.0.22 8.0.21 8.0.20 8.0.19 8.0.18 8.0.17 8.0.16 8.0.15 8.0.14 8.0.13 8.0.12 8.0.11 8.0.10 8.0.9 8.0.8 8.0.7 8.0.6 8.0.5 8.0.4 8.0.3 8.0.2 8.0.1 8.0.0
7.4.33 7.4.32 7.4.30 7.4.29 7.4.28 7.4.27 7.4.26 7.4.25 7.4.24 7.4.23 7.4.22 7.4.21 7.4.20 7.4.19 7.4.18 7.4.17 7.4.16 7.4.15 7.4.14 7.4.13 7.4.12 7.4.11 7.4.10 7.4.9 7.4.8 7.4.7 7.4.6 7.4.5 7.4.4 7.4.3 7.4.2 7.4.1 7.4.0
7.3.33 7.3.32 7.3.31 7.3.30 7.3.29 7.3.28 7.3.27 7.3.26 7.3.25 7.3.24 7.3.23 7.3.22 7.3.21 7.3.20 7.3.19 7.3.18 7.3.17 7.3.16 7.3.15 7.3.14 7.3.13 7.3.12 7.3.11 7.3.10 7.3.9 7.3.8 7.3.7 7.3.6 7.3.5 7.3.4 7.3.3 7.3.2 7.3.1 7.3.0
7.2.34 7.2.33 7.2.32 7.2.31 7.2.30 7.2.29 7.2.28 7.2.27 7.2.26 7.2.25 7.2.24 7.2.23 7.2.22 7.2.21 7.2.20 7.2.19 7.2.18 7.2.17 7.2.16 7.2.15 7.2.14 7.2.13 7.2.12 7.2.11 7.2.10 7.2.9 7.2.8 7.2.7 7.2.6 7.2.5 7.2.4 7.2.3 7.2.2 7.2.1 7.2.0
7.1.33 7.1.32 7.1.31 7.1.30 7.1.29 7.1.28 7.1.27 7.1.26 7.1.25 7.1.24 7.1.23 7.1.22 7.1.21 7.1.20 7.1.19 7.1.18 7.1.17 7.1.16 7.1.15 7.1.14 7.1.13 7.1.12 7.1.11 7.1.10 7.1.9 7.1.8 7.1.7 7.1.6 7.1.5 7.1.4 7.1.3 7.1.2 7.1.1 7.1.0
7.0.33 7.0.32 7.0.31 7.0.30 7.0.29 7.0.28 7.0.27 7.0.26 7.0.25 7.0.24 7.0.23 7.0.22 7.0.21 7.0.20 7.0.19 7.0.18 7.0.17 7.0.16 7.0.15 7.0.14 7.0.13 7.0.12 7.0.11 7.0.10 7.0.9 7.0.8 7.0.7 7.0.6 7.0.5 7.0.4 7.0.3 7.0.2 7.0.1 7.0.0
5.6.40 5.6.39 5.6.38 5.6.37 5.6.36 5.6.35 5.6.34 5.6.33 5.6.32 5.6.31 5.6.30 5.6.29 5.6.28 5.6.27 5.6.26 5.6.25 5.6.24 5.6.23 5.6.22 5.6.21 5.6.20 5.6.19 5.6.18 5.6.17 5.6.16 5.6.15 5.6.14 5.6.13 5.6.12 5.6.11 5.6.10 5.6.9 5.6.8 5.6.7 5.6.6 5.6.5 5.6.4 5.6.3 5.6.2 5.6.1 5.6.0
5.5.38 5.5.37 5.5.36 5.5.35 5.5.34 5.5.33 5.5.32 5.5.31 5.5.30 5.5.29 5.5.28 5.5.27 5.5.26 5.5.25 5.5.24 5.5.23 5.5.22 5.5.21 5.5.20 5.5.19 5.5.18 5.5.17 5.5.16 5.5.15 5.5.14 5.5.13 5.5.12 5.5.11 5.5.10 5.5.9 5.5.8 5.5.7 5.5.6 5.5.5 5.5.4 5.5.3 5.5.2 5.5.1 5.5.0
5.4.45 5.4.44 5.4.43 5.4.42 5.4.41 5.4.40 5.4.39 5.4.38 5.4.37 5.4.36 5.4.35 5.4.34 5.4.33 5.4.32 5.4.31 5.4.30 5.4.29 5.4.28 5.4.27 5.4.26 5.4.25 5.4.24 5.4.23 5.4.22 5.4.21 5.4.20 5.4.19 5.4.18 5.4.17 5.4.16 5.4.15 5.4.14 5.4.13 5.4.12 5.4.11 5.4.10 5.4.9 5.4.8 5.4.7 5.4.6 5.4.5 5.4.4 5.4.3 5.4.2 5.4.1 5.4.0
5.3.29 5.3.28 5.3.27 5.3.26 5.3.25 5.3.24 5.3.23 5.3.22 5.3.21 5.3.20 5.3.19 5.3.18 5.3.17 5.3.16 5.3.15 5.3.14 5.3.13 5.3.12 5.3.11 5.3.10 5.3.9 5.3.8 5.3.7 5.3.6 5.3.5 5.3.4 5.3.3 5.3.2 5.3.1 5.3.0
5.2.17 5.2.16 5.2.15 5.2.14 5.2.13 5.2.12 5.2.11 5.2.10 5.2.9 5.2.8 5.2.7 5.2.6 5.2.5 5.2.4 5.2.3 5.2.2 5.2.1 5.2.0
5.1.6 5.1.5 5.1.4 5.1.3 5.1.2 5.1.1 5.1.0
5.0.5 5.0.4 5.0.3
4.4.9 4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0
4.3.11 4.3.10 4.3.9 4.3.8 4.3.7 4.3.6 4.3.5 4.3.2 4.3.1 4.3.0
4.2.3 4.2.2 4.2.1 4.2.0
4.1.2 4.1.1 4.1.0
4.0.6
8.3.0RC5 8.3.0RC4 8.3.0RC3 8.3.0RC2 8.3.0RC1 8.3.0beta2 8.3.0beta1 8.3.0alpha3 8.3.0alpha2 8.3.0alpha1
Example #3 moldb.xml - small database of molecular information
Event-driven parsing (based on the expat library) can get
complicated when you have an XML document that is complex.
This function does not produce a DOM style object, but it
generates structures amenable of being traversed in a tree
fashion. Thus, we can create objects representing the data
in the XML file easily. Let's consider the following XML file
representing a small database of aminoacids information:
<?php
<?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>
Execute
Code
PHP Version:
8.3.14 8.2.26 8.1.31
8.0.30 7.4.33 7.3.33 7.2.34 7.1.33 7.0.33 5.6.40 5.5.38 5.4.45 5.3.29 5.2.17 5.1.6 5.0.5 4.4.9 4.3.11 4.2.3 4.1.2 4.0.6
8.4.0
8.3.14 8.3.13 8.3.12 8.3.11 8.3.10 8.3.9 8.3.8 8.3.7 8.3.6 8.3.5 8.3.4 8.3.3 8.3.2 8.3.1 8.3.0
8.2.26 8.2.25 8.2.24 8.2.23 8.2.22 8.2.21 8.2.20 8.2.19 8.2.18 8.2.17 8.2.16 8.2.15 8.2.14 8.2.13 8.2.12 8.2.11 8.2.10 8.2.9 8.2.8 8.2.7 8.2.6 8.2.5 8.2.4 8.2.3 8.2.2 8.2.1 8.2.0
8.1.31 8.1.30 8.1.29 8.1.28 8.1.27 8.1.26 8.1.25 8.1.24 8.1.23 8.1.22 8.1.21 8.1.20 8.1.19 8.1.18 8.1.17 8.1.16 8.1.15 8.1.14 8.1.13 8.1.12 8.1.11 8.1.10 8.1.9 8.1.8 8.1.7 8.1.6 8.1.5 8.1.4 8.1.3 8.1.2 8.1.1 8.1.0
8.0.30 8.0.29 8.0.28 8.0.27 8.0.26 8.0.25 8.0.24 8.0.23 8.0.22 8.0.21 8.0.20 8.0.19 8.0.18 8.0.17 8.0.16 8.0.15 8.0.14 8.0.13 8.0.12 8.0.11 8.0.10 8.0.9 8.0.8 8.0.7 8.0.6 8.0.5 8.0.4 8.0.3 8.0.2 8.0.1 8.0.0
7.4.33 7.4.32 7.4.30 7.4.29 7.4.28 7.4.27 7.4.26 7.4.25 7.4.24 7.4.23 7.4.22 7.4.21 7.4.20 7.4.19 7.4.18 7.4.17 7.4.16 7.4.15 7.4.14 7.4.13 7.4.12 7.4.11 7.4.10 7.4.9 7.4.8 7.4.7 7.4.6 7.4.5 7.4.4 7.4.3 7.4.2 7.4.1 7.4.0
7.3.33 7.3.32 7.3.31 7.3.30 7.3.29 7.3.28 7.3.27 7.3.26 7.3.25 7.3.24 7.3.23 7.3.22 7.3.21 7.3.20 7.3.19 7.3.18 7.3.17 7.3.16 7.3.15 7.3.14 7.3.13 7.3.12 7.3.11 7.3.10 7.3.9 7.3.8 7.3.7 7.3.6 7.3.5 7.3.4 7.3.3 7.3.2 7.3.1 7.3.0
7.2.34 7.2.33 7.2.32 7.2.31 7.2.30 7.2.29 7.2.28 7.2.27 7.2.26 7.2.25 7.2.24 7.2.23 7.2.22 7.2.21 7.2.20 7.2.19 7.2.18 7.2.17 7.2.16 7.2.15 7.2.14 7.2.13 7.2.12 7.2.11 7.2.10 7.2.9 7.2.8 7.2.7 7.2.6 7.2.5 7.2.4 7.2.3 7.2.2 7.2.1 7.2.0
7.1.33 7.1.32 7.1.31 7.1.30 7.1.29 7.1.28 7.1.27 7.1.26 7.1.25 7.1.24 7.1.23 7.1.22 7.1.21 7.1.20 7.1.19 7.1.18 7.1.17 7.1.16 7.1.15 7.1.14 7.1.13 7.1.12 7.1.11 7.1.10 7.1.9 7.1.8 7.1.7 7.1.6 7.1.5 7.1.4 7.1.3 7.1.2 7.1.1 7.1.0
7.0.33 7.0.32 7.0.31 7.0.30 7.0.29 7.0.28 7.0.27 7.0.26 7.0.25 7.0.24 7.0.23 7.0.22 7.0.21 7.0.20 7.0.19 7.0.18 7.0.17 7.0.16 7.0.15 7.0.14 7.0.13 7.0.12 7.0.11 7.0.10 7.0.9 7.0.8 7.0.7 7.0.6 7.0.5 7.0.4 7.0.3 7.0.2 7.0.1 7.0.0
5.6.40 5.6.39 5.6.38 5.6.37 5.6.36 5.6.35 5.6.34 5.6.33 5.6.32 5.6.31 5.6.30 5.6.29 5.6.28 5.6.27 5.6.26 5.6.25 5.6.24 5.6.23 5.6.22 5.6.21 5.6.20 5.6.19 5.6.18 5.6.17 5.6.16 5.6.15 5.6.14 5.6.13 5.6.12 5.6.11 5.6.10 5.6.9 5.6.8 5.6.7 5.6.6 5.6.5 5.6.4 5.6.3 5.6.2 5.6.1 5.6.0
5.5.38 5.5.37 5.5.36 5.5.35 5.5.34 5.5.33 5.5.32 5.5.31 5.5.30 5.5.29 5.5.28 5.5.27 5.5.26 5.5.25 5.5.24 5.5.23 5.5.22 5.5.21 5.5.20 5.5.19 5.5.18 5.5.17 5.5.16 5.5.15 5.5.14 5.5.13 5.5.12 5.5.11 5.5.10 5.5.9 5.5.8 5.5.7 5.5.6 5.5.5 5.5.4 5.5.3 5.5.2 5.5.1 5.5.0
5.4.45 5.4.44 5.4.43 5.4.42 5.4.41 5.4.40 5.4.39 5.4.38 5.4.37 5.4.36 5.4.35 5.4.34 5.4.33 5.4.32 5.4.31 5.4.30 5.4.29 5.4.28 5.4.27 5.4.26 5.4.25 5.4.24 5.4.23 5.4.22 5.4.21 5.4.20 5.4.19 5.4.18 5.4.17 5.4.16 5.4.15 5.4.14 5.4.13 5.4.12 5.4.11 5.4.10 5.4.9 5.4.8 5.4.7 5.4.6 5.4.5 5.4.4 5.4.3 5.4.2 5.4.1 5.4.0
5.3.29 5.3.28 5.3.27 5.3.26 5.3.25 5.3.24 5.3.23 5.3.22 5.3.21 5.3.20 5.3.19 5.3.18 5.3.17 5.3.16 5.3.15 5.3.14 5.3.13 5.3.12 5.3.11 5.3.10 5.3.9 5.3.8 5.3.7 5.3.6 5.3.5 5.3.4 5.3.3 5.3.2 5.3.1 5.3.0
5.2.17 5.2.16 5.2.15 5.2.14 5.2.13 5.2.12 5.2.11 5.2.10 5.2.9 5.2.8 5.2.7 5.2.6 5.2.5 5.2.4 5.2.3 5.2.2 5.2.1 5.2.0
5.1.6 5.1.5 5.1.4 5.1.3 5.1.2 5.1.1 5.1.0
5.0.5 5.0.4 5.0.3
4.4.9 4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0
4.3.11 4.3.10 4.3.9 4.3.8 4.3.7 4.3.6 4.3.5 4.3.2 4.3.1 4.3.0
4.2.3 4.2.2 4.2.1 4.2.0
4.1.2 4.1.1 4.1.0
4.0.6
8.3.0RC5 8.3.0RC4 8.3.0RC3 8.3.0RC2 8.3.0RC1 8.3.0beta2 8.3.0beta1 8.3.0alpha3 8.3.0alpha2 8.3.0alpha1