xml_parse_into_struct
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
xml_parse_into_struct
Референца за `function.xml-parse-into-struct.php` со подобрена типографија и навигација.
xml_parse_into_struct
(PHP 4, PHP 5, PHP 7, PHP 8)
xml_parse_into_struct — Parse XML data into an array structure
= NULL
XMLParser
$parser,string
$data,array
&$values,array
&$index = null): int|false
Парсирај XML податоци во структура на низаindexОваа функција парсира XML стринг во 2 паралелни структури на низи, една ( values ) содржи покажувачи до локацијата на соодветните вредности во
Параметри
parser-
низата. Овие последни два параметри мора да се поминат со референца.
data-
Референца до XML парсер.
values-
Стринг што содржи XML податоци.
index-
An array containing pointers to the location of the appropriate values in the $values.
Вратени вредности
xml_parse_into_struct() Низа што ги содржи вредностите на XML податоците false and trueвраќа 0 за неуспех и 1 за успех. Ова не е исто како
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 |
parser очекува XMLParser
инстанца сега; претходно, валидна xml resource се очекуваше.
|
Примери
, бидете внимателни со операторите како ===.
note Подолу е пример што ја илустрира внатрешната структура на низите што се генерираат од функцијата. Користиме едноставен
para таг вграден во
Пример #1 xml_parse_into_struct() example
<?php
$simple = "<para><note>simple note</note></para>";
$p = xml_parser_create();
xml_parse_into_struct($p, $simple, $vals, $index);
echo "Index array\n";
print_r($index);
echo "\nVals array\n";
print_r($vals);
?>таг, а потоа го парсираме ова и ги печатиме генерираните структури:
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
)
)
Кога ќе го извршиме тој код, излезот ќе биде:
Парсирањето водено од настани (базирано на библиотеката expat) може да стане комплицирано кога имате XML документ што е сложен. Оваа функција не произведува DOM објект, но генерира структури што може да се прегледуваат во форма на дрво. Така, можеме лесно да создадеме објекти што ги претставуваат податоците во XML датотеката. Да го разгледаме следната XML датотека што претставува мала база на податоци со информации за аминокиселини:
<?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>
И некој код за парсирање на документот и генерирање на соодветните објекти:
<?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);
unset($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);
?>** Database of AminoAcid objects:
Array
(
[0] => aminoacid Object
(
[name] => Alanine
[symbol] => ala
[code] => A
[type] => hydrophobic
)
[1] => aminoacid Object
(
[name] => Lysine
[symbol] => lys
[code] => K
[type] => charged
)
)