Привет, Гость!
home login register
[+] Купить Рекламу
Хостинг для тебя! Заходи не пожалеешь
Что мы делаем полезного на официальном сайте WAP-поддержки? Подробно ...
Вступайте в нашу группу ВКОНТАКТЕ
Поздравляем, новичка с ID:1000
Как самомусделать QR-код
IT новости: в Windows новая опасная уязвимость
Проблемы восприятия IT
Как подтвердить авторство в Google

Учебник PHP #14
<< 1 ... 6 7 8 9 >>
tag

xml_get_current_column_number( )

Функция xml_get_current_colunin_number( ) может использоваться в сочетании с xml_get_current_line_number( ) для определения точного местонахождения ошибки в документе XML. Синтаксис:

int xml_get_current_column_number(int анализатор)

Параметр функции определяет анализатор XML. Давайте усовершенствуем предыдущий пример:

while ($line = fread($fh. 4096)) :

if (! xml_parse($xml_parser, $line, feof($fh))):

$err_string = xml_error_string(xml_get_error_code($xml_parser));

$line_number = xml_get_current_line_number($xml_parser);

$column_number = xml_get_current_column_number($xml_parser)

print "Error! [Line $line_nuimber, Column $column_number]: $err_string";

endif;

endwhile;

Например, если ошибка была обнаружена в шестой строке файла, определяемого манипулятором $fh, сообщение будет выглядеть примерно так:

Error! [Line 6 Column 2]:mismatched tag

Параметры анализатора XML

В настоящее время в РНР поддерживаются два параметра, влияющих на работу анализатора XML:

XML_OPTION_CASE_FOLDING — автоматическое преобразование имен тегов к верхнему регистру;
XML_OPTION_TARGET_ENCODING — кодировка документа на выходе анализатора XML. В настоящее время поддерживаются кодировки UTF-8, ISO-8859-1 и US-ASCII.

Для получения текущих значений и модификации этих параметров применяются, соответственно, функции xml_parser_get_option( ) и xml_parser_set_option( ).

xml_parser_get_option( )

Функция xml_parser_get_option( ) получает текущее значение параметра анализатора XML. Синтаксис:

int xml_parser_get_option(int анализатор, int параметр)

Первый параметр функции определяет анализатор XML, а второй — имя интересующего вас параметра. Пример:

$setting = xml_parser_get_option($xml_parser, XML_OPTION_CASE_FOLDING);

print "Case Folding: $setting";

Если параметру XML_OPTION_CASE_FOLDING не присваивалось другое значение, функция вернет значение по умолчанию. В этом случае будет выведен следующий результат:

Case Folding: 1

xml_parser_set_option( )

Функция xml_parser_set_option() задает значение параметра анализатора XML. Синтаксис:

int xml_parser_set_option(int анализатор, int параметр, mixed значение)

Первый параметр функции определяет анализатор XML, второй — имя интересующего вас параметра, а третий — его новое значение. Пример:

$setting = xml_parser_set_option($xml_parser, XML_OPTION_TARGER_ENCODING."UTF-8"):

В результате выполнения этой команды выходная кодировка документа изменяется с ISO-8859-1 на UTF-8.

Преобразование XML в HTML

Предположим, у вас имеется документ XML bookmarks.xml, содержащий список ссылок. Он выглядит примерно так:

<?xml version="1.0"?>

<website>

<title>Epicurious</title>

<url>http://www.epicurious.com</url>

<description>

Epicurious is a great online cooking resource, providing tutorials.

recipes, forums and more.

</description> </website>

Допустим, вы хотите преобразовать bookmarks.xml и вывести его содержимое в формате, совместимом с форматом браузера вашего компьютера. Программа, приведенная в листинге 14.3, преобразует файл к нужному формату.

Листинг 14.3. Преобразование XML в HTML

Class XMLHTML {

VAR $xmlparser: VAR $tagcolor ="#800000";

VAR $datacolor ="#0000ff";

function XMLHTML( ) {

$this->xmlparser = xml_parser_create();

xml_set_object($this->xmlparser. &$this);

xml_set_element_handler($this->xmlparser, "startTag", "endTag");

xml_set_character_data_handler($this->xmlparser. "characterData");

}

// Функция отвечает за обработку всех открывающих тегов.

function startTag($parser, $tagname, $attributes) {

GLOBAL $tagcolor;

print "<font size=\"-2\" color=\"$this->tagcolor\" face=\"arial,

verdana\ ">&1 t ; $tagname&gt ; </f ont> <br>" ;

// Функция отвечает за обработку всех символьных данных.

function characterData($parser. $characterData) {

GLOBAL $datacplor;

print "<font size=\"-2\" color=\"$this->datacolor\" face=\"arial,

verdana\ ">&nbsp; &nbsp; &nbsp; $characterData</font> <br>";

// Функция отвечает за обработку всех закрывающих тегов.

function endTag(Sparser, $tagname) {

GLOBAL Stagcolor;

print "<font size=\"-2\" color=\"$this->tagcolor\" face=\"arial, verdana\">&lt;/

$tagname&gt;</font> <br>";

}

function.parse($fp) {

// xml_parse($this->xm1parser,$data);

// Обработать файл XML

while ( $line = fread($fp. 4096) ) :

// При возникновении ошибки прервать обработку // и вывести сообщение об ошибке.

if ( ! xml_parse($this->xmlparser, $line, feof($fp))) :

die(sprintf("XML error: %s at line %d",

xml_error_sthng(xml_get_error_code($this->xmlparser)),

xml_get_curren_line_number($this->xml parser)));

endif;

endwhile;

}

}

// Открыть файл XML для обработки

$xml_file = "bookmarks. xml";

$fp = f open ($xml_flie, "r");

// Создать новый объект

$xml_parser = new XMLHTML;

// Обработать $xml_file

$xml_parser->parse($fp);

?>

В результате преобразования файл bookmarks.xml выводится в браузере в следующем виде:

<WEBSITE>

<TITLE>

Epicurious

</TITLE>

<URL>

http : //www.epicurious.com

</URL>

<DESCRIPTION>

Epicurious is a great online cooking resource,

providing tutorials, recipes, forums and more.

</DESCRIPTION>

</WEBSITE>

Конечно, результат не такой уж впечатляющий — мы всего лишь добились, чтобы файл XML отображался в браузере. Внеся небольшие изменения в листинг 14.3, можно преобразовать URL в работающие гиперссылки, оформить данные между парой тегов <TITLE>...</TITLE> жирным шрифтом и т. д. Как видно из листинга 14.3, я использую шрифт двух разных цветов, чтобы продемонстрировать возможность форматирования текста в браузере.

Несколько слов о РНР и XML

В этой главе мы познакомились с XML и различными функциями РНР, предназначенными для обработки документов в формате XML. Поскольку основной темой книги является РНР, я описал лишь одну из трех спецификаций стандарта XML и не упомянул о том, как работают XSL и XLL. Конечно, полноценное отделение содержания от представления требует использования всех трех компонентов или по меньшей мере XML и XSL.

К сожалению, на момент написания книги РНР еще не обладал возможностями, которые бы позволяли работать с XML исключительно средствами РНР. Конечно,

возможности РНР продолжают расширяться, и в будущем эта проблема обязательно будет решена.

Особого внимания в этой области заслуживает XSL-процессор Sablotron, разработанный компанией Ginger Alliance Lts. (http://www.gingerall.com). 12 октября 2000 года было объявлено о том, что РНР 4.03 отныне распространяется с модулем расширения Sablotron для платформ Linux и Windows. Обязательно проследите за дальнейшим развитием событий.

Итоги

В этой главе был изложен довольно обширный материал, касающийся XML и возможностей обработки кода XML в РНР. Глава начинается с краткой истории языков разметки. Читатель знакомится с XML
Комментарии (0)
<< 1 ... 6 7 8 9 >>
Скачать Java книгу

»php/mysql/pdo/js
В библиотеку

На главную

Сообщество wap разработчиков I HwapCMS официальный сайт поддержки


RSS-лента
Генерация: 0.2231 сек.