У меня есть XML-файл («x_path_att.xml») как
<?xml version="1.0" encoding="UTF-8"?>
<root>
<book id="1" name="Book1" genre="Fantasy" />
<book id="2" name="Book2" genre="Novel" />
</root>
Я хочу сделать: Показать название книги, где id = 1. Я использовал XPath.
<?php
$xml = simplexml_load_file("x_path_att.xml");
$book_name = $xml->xpath("root/book[@id='1']/@name");
print_r($book_name);
echo '<BR />'.$book_name[0].'<BR />';
?>
И это мой вывод на экран:
Array ( )
Notice: Undefined offset: 0 in D:\EasyPHP... on line 6
Итак, ясно, что массив пуст, но я не понимаю, почему. Я искал в Интернете, и я думаю, что все должно быть в порядке. Где ошибка, пожалуйста?
Спасибо!
У вас отсутствует косая черта в начале вашего пути:
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<root>
<book id="1" name="Book1" genre="Fantasy" />
<book id="2" name="Book2" genre="Novel" />
</root>
XML;
$xml = simplexml_load_string($xml);
$book_name = $xml->xpath("/root/book[@id='1']/@name");
print_r($book_name);
И чтобы получить значение атрибута:
echo $book_name[0]->attributes()->name;
Предоставление:
Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[name] => Book1
)
)
)
Book1
Других решений пока нет …