PHP xml_set_element_handler()Функции


PHP XML 参考手册Полное справочное руководство по PHP XML

Определение и использование

Функция xml_set_element_handler() задает функции, которые будут вызываться в начале и в конце элементов XML-документа.

В случае успеха эта функция возвращает TRUE. В случае неудачи она возвращает FALSE.

Синтаксис

xml_set_element_handler(parser,start,end)

Parameters Описание
parser Обязательный. Указывает XML-парсер, который нужно использовать.
start Обязательный. Указывает функцию, которая будет вызываться при начале элемента.
end Обязательный. Указывает функцию, которая будет вызываться при завершении элемента.

Функция, указанная параметром "start", должна иметь три параметра:

Parameters Описание
parser Обязательный. Задаёт переменную, содержащую XML-парсер, который вызывает обработчик.
name Обязательный. Указывает переменную, содержащую имя элемента (в виде строки) в XML-файле, который вызывает функцию.
data Обязательный. Указывает массив, содержащий атрибуты элемента (в виде строк) в XML-файле.

Функция, указанная параметром "end", должна иметь два параметра:

Parameters Описание
parser Обязательный. Задаёт переменную, содержащую XML-парсер, который вызывает обработчик.
name Обязательный. Указывает переменную, содержащую имя элемента (в виде строки) в XML-файле, который вызывает функцию.


Советы и примечания

Примечание:Параметры start и end могут быть массивом, содержащим ссылку на объект и имя метода.


Пример

<?php
$parser=xml_parser_create();

function start($parser,$element_name,$element_attrs)
{
switch($element_name)
{
case "NOTE":
echo "-- Примечание --<br />";
break;
case "TO":
echo "Кому: ";
break;
case "FROM":
echo "От: ";
break;
case "HEADING":
echo "Заголовок: ";
break;
case "BODY":
echo "Сообщение: ";
}
}

function stop($parser,$element_name)
{
echo "<br />";
}

function char($parser,$data)
{
echo $data;
}

xml_set_element_handler($parser,"start","stop");
xml_set_character_data_handler($parser,"char");
$fp=fopen("test.xml","r");

while ($data=fread($fp,4096))
{
xml_parse($parser,$data,feof($fp)) or
die (sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}

xml_parser_free($parser);
?>

Вывод приведённого выше кода показан ниже:

-- Примечание --
Кому: Tove
От: Jani
Заголовок: Напоминание
Сообщение: Не забудь меня в эти выходные!


PHP XML 参考手册Полный справочник по PHP XML Другие расширения