Этот код выводит содержимое файла XML в броузер, но это не тот формат, который нам нужен. Обратите внимание, что за каждым элементом Travel- package следуют значения атрибутов его элементов, как для Package. Из этого следует, что вложенность элементов не была соблюдена при построении или анализе дерева (рис. 21.6):
Чтобы получить требуемый HTML, надо проделать еще некоторую работу.
Начало этого файла такое как в предыдущем примере. Мы создаем новый экземпляр объекта XML с именем $doc и новый контекст для XPath с именем $context:
<html> <tiead>
<title>DOM Travel Packages</title> </head>
<body>
<h1>Travel Packages</h1> <table> <?php
$doc = domxml_open_file(( "travel, xml''); {context = xpath_new_context(Sdoc);
$root = $doc->document_element();
Узел Travelpackage будет выступать в качестве абстрактного разделителя строк для этого документа. У Travelpackage есть атрибут name. Значение этого атрибута применяется для поиска каждой группы узлов, которую надо извлечь из дерева DOM. Создадим массив, собирающий вместе все дочерние узлы Travelpackage name="x". С помощью цикла for обойдем массив и используем массив как значение в команде XPath:
$var = arrayC'a", "b"):
for ($x = 0; $x < count($var); $x++) { $path = xpath_eval($context,
"//Travelpackage[@name=\"$var[$x]\"]/Country_name");
StmpArray =
Первая команда XPath пре
вратится в //Travelpackage[@name="a" ]/Country_name во время первого прохода цикла for. Все узлы с именем Country_name, являющиеся дочерними для Travelpackage, где name="a", будут записаны в $tmpArray. Эту команду xpath_eval можно было бы заключить в условный оператор чтобы улучшить обработку ошибок, как показано в предыдущем примере кода:
echo( "<trxtd>"); echo($fmpArray[0]->name); echo("</td><td><a href=\"#\">"); echo($tmpArray[0]->content); echo( "</ax/td></t r>\n");
Мы собрали некоторую информацию об узлах и теперь выведем ее в таблицу. Массив $tmpAг ray может хранить не только имя или содержимое. В зависимости от документа XML, он может также содержать тип, узел, атрибуты, комментарии и/или инструкции обработки. Если бы мы выполнили то увидели бы элементы массива. Вот как они выглядят для этого кода и документа XML:
Array (
[0] => DomNode Object (