Сделаем парсер xml-файла с помощью объектно-ориентированных методов.
Код xml-файла доступен на этой странице.
dom.php
<?php
header( "Content-Type: text/html;charset=utf-8");
// Создадим экземпляр класса дом-документ.
$dom = new DomDocument();
// Зачитаем документ в память.
$dom->load("catalog.xml");
// Выбирает корневой элемент в считываемом файле. В нашем случае: catalog
$root = $dom->documentElement;
// Узнаем тип элемента.
// echo $root->nodeType; // 1
// Посмотрим, есть ли текстовое содержимое.
// echo $root->textContent; // Выдает весь текст файла.
// Получим узлы-наследники.
$books = $root->childNodes;
// var_dump($books); // object(DOMNodeList)#3 (1) { ["length"]=> int(25) }
// Пройдемся циклом по объекту, чтобы получить текст.
// Необходимо учитывать, что пробелы также выводятся, как текстовой контент.
/* foreach($books as $book) {
echo $book->textContent; // выводит текст
echo "<hr>";
} */
?>
<html>
<head>
<title>Каталог</title>
</head>
<body>
<h1>Каталог книг</h1>
<table border="1" width="100%">
<tr>
<th>Автор</th>
<th>Название</th>
<th>Год издания</th>
<th>Цена, руб</th>
</tr>
<?php
//Парсинг
foreach($books as $book) {
if($book->nodeType == 1) {
echo "<tr>";
foreach($book->childNodes as $item) {
if($item->nodeType == 1) {
echo "<td>{$item->textContent}</td>";
}
}
echo "</tr>";
}
}
?>
</table>
</body>
</html>
Код xml-файла доступен на этой странице.
dom.php
<?php
header( "Content-Type: text/html;charset=utf-8");
// Создадим экземпляр класса дом-документ.
$dom = new DomDocument();
// Зачитаем документ в память.
$dom->load("catalog.xml");
// Выбирает корневой элемент в считываемом файле. В нашем случае: catalog
$root = $dom->documentElement;
// Узнаем тип элемента.
// echo $root->nodeType; // 1
// Посмотрим, есть ли текстовое содержимое.
// echo $root->textContent; // Выдает весь текст файла.
// Получим узлы-наследники.
$books = $root->childNodes;
// var_dump($books); // object(DOMNodeList)#3 (1) { ["length"]=> int(25) }
// Пройдемся циклом по объекту, чтобы получить текст.
// Необходимо учитывать, что пробелы также выводятся, как текстовой контент.
/* foreach($books as $book) {
echo $book->textContent; // выводит текст
echo "<hr>";
} */
?>
<html>
<head>
<title>Каталог</title>
</head>
<body>
<h1>Каталог книг</h1>
<table border="1" width="100%">
<tr>
<th>Автор</th>
<th>Название</th>
<th>Год издания</th>
<th>Цена, руб</th>
</tr>
<?php
//Парсинг
foreach($books as $book) {
if($book->nodeType == 1) {
echo "<tr>";
foreach($book->childNodes as $item) {
if($item->nodeType == 1) {
echo "<td>{$item->textContent}</td>";
}
}
echo "</tr>";
}
}
?>
</table>
</body>
</html>
Комментариев нет:
Отправить комментарий