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
        )

)