PHP: Как я могу получить доступ к этому объекту XML, если его имя содержит зарезервированное слово?

Я пытаюсь разобрать этот фид: http://musicbrainz.org/ws/1/artist/c0b2500e-0cef-4130-869d-732b23ed9df5?type=xml&inc=url-rels

Я хочу получить URL-адреса внутри тега «relation-list».

Я пытался получить URL-адрес с помощью PHP, используя simplexml_load_file(), но не могу получить к нему доступ, используя $feed->artist->relation-list, поскольку PHP интерпретирует «список» как функцию list().

У меня есть ощущение, что я делаю это неправильно (мало опыта работы с XML), и даже если бы я смог получить нужные мне элементы, я не знаю, как извлечь их атрибуты (я просто хочу, чтобы type и target полей).

Может ли кто-нибудь осторожно подтолкнуть меня в правильном направлении?

Спасибо. Мэтт


person Matt Andrews    schedule 10.08.2010    source источник


Ответы (1)


Взгляните на примеры на странице php.net. , они на самом деле говорят вам, как это решить:

// $feed->artist->relation-list
$feed->artist->{'relation-list'}

Чтобы получить атрибут узла, просто используйте имя атрибута в качестве индекса массива на узле:

foreach( $feed->artist->{'relation-list'}->relation as $relation ) {
    $target = (string)$relation['target'];
    $type = (string)$relation['type'];
    // Do something with it
}

(Не проверено)

person svens    schedule 10.08.2010
comment
Спасибо, кажется, я пропустил этот синтаксис. Ты герой! - person Matt Andrews; 11.08.2010
comment
Иногда синтаксис SimpleXML кажется очень странным, он меня сильно смущает. Никогда не забывайте выполнять приведение типов, иначе ваш сценарий вылетит со странными ошибками. (: - person svens; 12.08.2010