.. то скорее всего, вы ошибаетесь. Рассмотрим следующий пример XML.
В документе example.xml содержится запись о валюте и информация о категории товара. Обе записи содержат аттрибуты.
1 2 3 4 |
<xml version="1.0" encoding="utf-8"> <currency id="RUR" rate="1"></currency> <category id="13">Собаки</category> </xml> |
Выполним чтение и вывод информации в консоль.
1 2 |
$xml = simplexml_load_file('example.xml'); print_r($xml); |
Получим вот такую информацию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
SimpleXMLElement Object ( [@attributes] => Array ( [version] => 1.0 [encoding] => utf-8 ) [currency] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => RUR [rate] => 1 ) ) [category] => Собаки ) |
Здесь вы можете удивиться — атрибуты для первой записи currency вы видите, а вот вторая запись category — выведена без атрибутов.
Почему не выведены атрибуты?
Причина в том, что атрибуты выводятся в случае, если нет inline значения тега (как в случае с currency). В случае с категорией тег содержит inline текст — «Собаки».
Как получить значения атрибутов XML в случае заданного inline значения?
Так как мы имеем дело с SimpleXMLElement объектом, то атрибуты узла получаются с помощью метода attributes().
1 |
print_r($xml->category->attributes()); |
Получаем массив свойств-атрибутов XML узла:
1 2 3 4 5 6 7 |
SimpleXMLElement Object ( [@attributes] => Array ( [id] => 13 ) ) |
Спасибо за пояснение про наличие inline. Кроме вас — нигде не нашел