integer xml_get_error_code(resource parser)
Функция xml_get_error_code возвращает код последней ошибки, обнаруженной заданным анализатором. Для всех ошибок заданы определенные константы (табл. 20.2). Если ошибки нет, возвращается константа XML_ERROR_NONE. Если задан неверный анализатор, возвращается значение FALSE.

Таблица 20.2. Константы ошибок XML
XML_ERROR_ASYNC_ENTITY
XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF
XML_ERROR_BAD_CHAR_REF
XML_ERROR_BINARY_ENTITY_REF
XML_ERROR_DUPLICATE_ATTRIBUTE
XML_ERROR_EXTERNAL_ENTITY_HANDLING
XML_ERROR_INCORRECT_ENCODING
XML_ERROR_INVALID_TOKEN
XML_ERROR_JUNK_AFTER_DOC_ELEMENT
XML_ERROR_MISPLACED_XML_PI
XML_ERROR_NONE
XML_ERROR_NO_ELEMENTS
XML_ERROR_NO_MEMORY
XML_ERROR_PARAM_ENTITY_REF
XML_ERROR_PARTIAL_CHAR
XML_ERROR_RECURSIVE_ENTITY_REF
XML_ERROR_SYNTAX XML_ERROR_TAG_MISMATCH
XML_ERROR_UNCLOSED_CDATA_SECTION
XML_ERROR_UNCLOSED_TOKEN
XML_ERROR_UNDEFINED_ENTITY
XML_ERROR_UNKNOWN_ENCODING 
boolean xml_parse(resource parser, string data, boolean final)
Функция xml_parse сканирует данные и вызывает зарегистрированные программы обработки. Объем данных, заданных аргументом size, не ограничен. За один прием можно проанализировать как целый файл, так и несколько байтов. Обычно анализ производится в цикле.
Аргумент final является необязательным и позволяет программе обработки обнаружить окончание файла.
boolean xml_parse_into_struct(resource parser, string data, array structure, array index)
Функция xml_parse_info_struct (листинг 20.11) обрабатывает весь документ и создает массив с описанием документа. В качестве ссылки необходимо передать аргумент structure. В него добавляются элементы, пронумерованные начиная с нуля. Каждый элемент содержит ассоциативный массив, проиндексированный по значениям tag, type, level и value. Аргумент index является необязательным. При этом также необходимо передавать ссылку. Она будет содержать конкретные теги, найденные в файле XML. Значением каждого элемента является перечень целых чисел, которые являются индексами массива structure. Это позволит вам проиндексировать элементы массива structure, соответствующие заданному тегу. Работая с функцией use xml_parse_into_struct, вы можете вызывать любую установленную программу обработки.

Листинг 20.11. Функция xml_parse_into_struct

<?php
// создать программу обработки if(!($parser = xml_parser_create()))
{
print("Программу обработки создать невозможно!<br>"); exit();
}
//принять целый файл
$data = file_get_contents("corephp.xml"); // проанализировать файл и поместить результат в массив xml_parse_into_struct($parser, $data, $structure, $index); // удалить программу обработки xml_parser_free($parser); print("Структура:<br>" .
"<table border="1">" -
"<tr>" .
"<th>tag</th>" . "<th>type</th>" . "<th>level</th>" . "<th>value</th>" . "<tr>");
foreach($structure as $s)
{
if(!isset($s["value"]))
{
$s["value"] = "";
}
print("<tr>" .
"<td>{$s["tag"]}</td>" .
"<td>{$s["type"]}</td>" . "<td>{$s["level"]}</td>" . "<td>{$s["value"]}</td>" . "<tr>");
}
print("</table>");
print("Ссылка на элементы:<br>"); foreach($index as $key=>$value)
{
print("$key:"); foreach($value as $i)
{
print(" $i");
}
print("<br>");
}

resource xml_parser_create(string encoding)
Вызов функции xml_parser_create является первым шагом при анализе XML-документа. Она возвращает идентификатор, который будет впоследствии использоваться в работе со многими функциями. Необязательный аргумент encoding позволяет задавать кодировку, которая будет использоваться анализатором. Тремя допустимыми кодировками являются ISO-8859-1, US-ASCII и UTF-8. Кодировка ISO-8859-1 устанавливается по умолчанию.