Похоже, что существует много проблем с simpleXML в PHP. Я выполняю последнюю версию php в Windows, и я просто не могу заставить основные примеры simpleXML работать в документации.
Мой XML-файл:
<?xml version="1.0" encoding="ISO-8859-1"?>
<programme>
<title>Billy Bushwaka</title>
<episodeNumber>2</episodeNumber>
<description>Billy Bushwaka entertains</description>
<url>play.swf</url>
</programme>
Моя программа PHP:
<?php
$xml = simplexml_load_file("local.xml");
$result = $xml->xpath("//programme");
echo "Title: " . $result . "</br>";
?>
Все, что я получаю, следующее:
Заголовок: массив
Как может я получать "Заголовок: Billy Bushwaka"?
Нет никаких повторений данных XML, таким образом, я не хочу использовать массивы.
Прежде всего, всегда называйте переменные PHP после узла, который они представляют.
// корневой узел - это
$ program = simplexml_load_file ("local.xml");
Доступ к дочерним элементам (узлам), как если бы они были свойствами объекта.
echo $ programme-> title;
Если есть несколько дочерних элементов, использующих одно и то же имя, вы можете указать их позицию с отсчетом от 0
// first child
echo $ programme-> title [0];
// создаем или изменяем значение второго дочернего элемента
$ programme-> title [1] = 'Второй заголовок';
Доступ к атрибутам, как если бы они были ключами массива
//
эхо $ mynode ['attr'];
XPath всегда возвращает массив.
Возвращаясь к вашему случаю, лучший способ получить доступ к этому узлу
- это
$programme = simplexml_load_file("local.xml");
echo "Title: " . $programme->title;
Вероятно, вам следует изменить xpath на // program / title
, а затем echo $ result [0]
или оставить xpath как это и echo $ result [0] -> title
. Помните, что var_dump всегда поможет вам.
Прежде всего, метод simplexml xpath всегда возвращает массив совпадений. Даже если есть только 1 совпадение (или даже 0, и в этом случае результат - пустой массив). Вот почему на выходе вы получаете "Array".
Во-вторых, если вам нужен только заголовок, вам нужно изменить свой запрос xpath:
$result = $xml->xpath("//programme/title");
echo "Title: " . $result[0] . "</br>";
Я думаю, вы хотите:
$result = $xml->xpath("/programme/title");
echo "Title: " . $result[0] . "</br>";