xml_parse_into_struct
(PHP 4, PHP 5, PHP 7, PHP 8)
xml_parse_into_struct - Розбір XML-даних та приміщення в масив
Опис
xml_parse_into_struct( XMLParser $parser, string $data, array &$values, array &$index = null): int
Ця функція розбирає XML-рядок і поміщає дані у 2 масиви. Масив index
содержит указатели на размещение значений в массивеvalues
. Аргументи, що задають масиви, повинні передаватися на функцію за посиланням.
Список параметрів
parser
Посилання на використовуваний XML-аналізатор.
data
Рядок XML-даних.
values
Масив значень XML даних.
index
Масив покажчиків на відповідні значення масиві $values.
Значення, що повертаються
xml_parse_into_struct() повертає 0 при невдалому розборі рядка та 1 при успішному. Це не те саме, що false
і true
, будьте обережні з такими операторами, як ===.
список змін
Версия | Опис |
---|---|
8.0.0 | Параметрparser чекає на екземпляр XMLParser; раніше очікувався коректний xml ресурс (Resource). |
Приклади
Нижче наведено приклад, що демонструє внутрішній пристрій масивів, що генеруються функцією. XML-рядок містить простий тег note
вкладений у тег para
. Програма у прикладі розбирає цей рядок і виводить створені масиви:
Приклад #1 Приклад використання xml_parse_into_struct()****
Loading...
Після обробки програма виведе наступне:
Index array
Array
(
[PARA] => Array
(
[0] => 0
[1] => 2
)
[NOTE] => Array
(
[0] => 1
)
)
Массив Vals
Array
(
[0] => Array
(
[tag] => PARA
[type] => open
[level] => 1
)
[1] => Array
(
[tag] => NOTE
[type] => complete
[level] => 2
[value] => простое примечание
)
[2] => Array
(
[tag] => PARA
[type] => close
[level] => 1
)
)
Розбір, що керується подіями (заснований на бібліотеці expat) може дати важкооброблюваний результат у разі, якщо розбирається складовий XML-документ. Ця функція не створює DOM-об'єктів, але масиви, що нею створюються, можна перетворити на деревоподібну структуру згодом. Таким чином, можна досить просто створювати об'єкти, що представляють вміст XML-файлу. Припустимо, що наступний XML файл представляє невелику базу даних з інформацією про амінокислоти:
Приклад #2 moldb.xml – невелика база даних з інформацією про молекули
Alanine ala A
hydrophobic Lysine lys K
charged
Код, який розбирає документ і створює відповідні об'єкти:
Приклад #3 parsemoldb.php - розбирає moldb.xml і поміщає дані масив молекул
Loading...
Після виконання parsemoldb.php змінна $db містить масив об'єктів AminoAcid, А висновок відповідно наступний:
** База данных аминокислот:
Array
(
[0] => aminoacid Object
(
[name] => Alanine
[symbol] => ala
[code] => A
[type] => hydrophobic
)
[1] => aminoacid Object
(
[name] => Lysine
[symbol] => lys
[code] => K
[type] => charged
)
)