Допустим, у нас есть xml-файл, который мы хотим вывести в виде таблицы книг на странице.
catalog.xml
<?xml version="1.0" encoding="utf-8" ?>
<catalog>
<book>
<author>Алекс Гомер</author>
<title>XML и IE5</title>
<pubyear>2000</pubyear>
<price>200</price>
</book>
<book>
<author>Алекс Хоумер</author>
<title>Dimanic HTML</title>
<pubyear>2004</pubyear>
<price>120</price>
</book>
<book>
<author>Алексей Валиков</author>
<title>Технология XSLT</title>
<pubyear>2006</pubyear>
<price>150</price>
</book>
<book>
<author>Стивен Холзнер</author>
<title>XSLT</title>
<pubyear>2005</pubyear>
<price>170</price>
</book>
<book>
<author>Михаил Масленников</author>
<title>Практическая криптография</title>
<pubyear>2009</pubyear>
<price>200</price>
</book>
<book>
<author>Джерри Хонейкатт</author>
<title>Реест Windows XP</title>
<pubyear>2007</pubyear>
<price>250</price>
</book>
<book>
<author>Уолтер Брюс</author>
<title>Windows XP. Средства повышения производительности</title>
<pubyear>2008</pubyear>
<price>250</price>
</book>
<book>
<author>Андрей Попов</author>
<title>Windows Script Host для Windows 2000/XP</title>
<pubyear>2002</pubyear>
<price>220</price>
</book>
<book>
<author>Джон Уокенбах</author>
<title>Excel 2002. Библия пользователя</title>
<pubyear>2003</pubyear>
<price>260</price>
</book>
<book>
<author>Сандра Э. Эдди</author>
<title>XML. Справочник</title>
<pubyear>2004</pubyear>
<price>100</price>
</book>
<book>
<author>Майкл Ховард</author>
<title>Разработка защищенных Web-приложений на платформе Windows 2000</title>
<pubyear>2006</pubyear>
<price>250</price>
</book>
<book>
<author>Михаэль Зеебергер-Вайхсельбаум</author>
<title>WAP-программирование на языке WML</title>
<pubyear>2005</pubyear>
<price>150</price>
</book>
</catalog>
sax.php
<?php
header( "Content-Type: text/html;charset=utf-8");
// Создание парсера xml-файла
$sax = xml_parser_create("utf-8");
// Функция обработчик начальных тегов (открывающих тегов)
function onStart($parser, $tag, $attributes){
if($tag != "CATALOG" and $tag != "BOOK")
echo "<td>";
if($tag == "BOOK")
echo "<tr>";
}
// Функция обработчик закрывающих тегов
function onEnd($parser, $tag){
if($tag != "CATALOG" and $tag != "BOOK")
echo "</td>";
if($tag == "BOOK")
echo "</tr>";
}
// Функция обработчик текстового содержимого
function onText($parser, $text){
echo $text;
}
// Назначение обработчиков начальных и конечных тегов
xml_set_element_handler($sax, "onStart", "onEnd");
// Назначение обработчика текстового содержимого
xml_set_character_data_handler($sax, "onText");
?>
<html>
<head>
<title>Каталог</title>
</head>
<body>
<h1>Каталог книг</h1>
<table border="1" width="100%">
<tr>
<th>Автор</th>
<th>Название</th>
<th>Год издания</th>
<th>Цена, руб</th>
</tr>
<?php
//Парсинг. Запустим парсер.
xml_parse($sax, file_get_contents("catalog.xml"));
?>
</table>
</body>
</html>
По материалам "Специалиста".
catalog.xml
<?xml version="1.0" encoding="utf-8" ?>
<catalog>
<book>
<author>Алекс Гомер</author>
<title>XML и IE5</title>
<pubyear>2000</pubyear>
<price>200</price>
</book>
<book>
<author>Алекс Хоумер</author>
<title>Dimanic HTML</title>
<pubyear>2004</pubyear>
<price>120</price>
</book>
<book>
<author>Алексей Валиков</author>
<title>Технология XSLT</title>
<pubyear>2006</pubyear>
<price>150</price>
</book>
<book>
<author>Стивен Холзнер</author>
<title>XSLT</title>
<pubyear>2005</pubyear>
<price>170</price>
</book>
<book>
<author>Михаил Масленников</author>
<title>Практическая криптография</title>
<pubyear>2009</pubyear>
<price>200</price>
</book>
<book>
<author>Джерри Хонейкатт</author>
<title>Реест Windows XP</title>
<pubyear>2007</pubyear>
<price>250</price>
</book>
<book>
<author>Уолтер Брюс</author>
<title>Windows XP. Средства повышения производительности</title>
<pubyear>2008</pubyear>
<price>250</price>
</book>
<book>
<author>Андрей Попов</author>
<title>Windows Script Host для Windows 2000/XP</title>
<pubyear>2002</pubyear>
<price>220</price>
</book>
<book>
<author>Джон Уокенбах</author>
<title>Excel 2002. Библия пользователя</title>
<pubyear>2003</pubyear>
<price>260</price>
</book>
<book>
<author>Сандра Э. Эдди</author>
<title>XML. Справочник</title>
<pubyear>2004</pubyear>
<price>100</price>
</book>
<book>
<author>Майкл Ховард</author>
<title>Разработка защищенных Web-приложений на платформе Windows 2000</title>
<pubyear>2006</pubyear>
<price>250</price>
</book>
<book>
<author>Михаэль Зеебергер-Вайхсельбаум</author>
<title>WAP-программирование на языке WML</title>
<pubyear>2005</pubyear>
<price>150</price>
</book>
</catalog>
sax.php
<?php
header( "Content-Type: text/html;charset=utf-8");
// Создание парсера xml-файла
$sax = xml_parser_create("utf-8");
// Функция обработчик начальных тегов (открывающих тегов)
function onStart($parser, $tag, $attributes){
if($tag != "CATALOG" and $tag != "BOOK")
echo "<td>";
if($tag == "BOOK")
echo "<tr>";
}
// Функция обработчик закрывающих тегов
function onEnd($parser, $tag){
if($tag != "CATALOG" and $tag != "BOOK")
echo "</td>";
if($tag == "BOOK")
echo "</tr>";
}
// Функция обработчик текстового содержимого
function onText($parser, $text){
echo $text;
}
// Назначение обработчиков начальных и конечных тегов
xml_set_element_handler($sax, "onStart", "onEnd");
// Назначение обработчика текстового содержимого
xml_set_character_data_handler($sax, "onText");
?>
<html>
<head>
<title>Каталог</title>
</head>
<body>
<h1>Каталог книг</h1>
<table border="1" width="100%">
<tr>
<th>Автор</th>
<th>Название</th>
<th>Год издания</th>
<th>Цена, руб</th>
</tr>
<?php
//Парсинг. Запустим парсер.
xml_parse($sax, file_get_contents("catalog.xml"));
?>
</table>
</body>
</html>
По материалам "Специалиста".
Комментариев нет:
Отправить комментарий