domdocument — дочерние узлы PHP

Поэтому я пытаюсь перебрать документ DOM, который будет выглядеть так:

<track rank="1">
<name>Believe</name>
<duration>239</duration>
<mbid>13194c93-89c6-4ab4-aaf2-15db5d73b74e</mbid>
<url>http://www.last.fm/music/Cher/_/Believe</url>
<streamable fulltrack="0">0</streamable>
<artist>
<name>Cher</name>
<mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
<url>http://www.last.fm/music/Cher</url>
</artist>
</track>

Используя PHP я могу просто сделать $tracks = $xml->getElementsByTagName("track");
И дело в том, что для каждого трека я хочу получить как его название, так и продолжительность. Мне известно о свойстве childNodes, но я не хочу зацикливать их все. Есть ли способ получить к ним доступ напрямую, не используя foreach для своих детей?

0

Решение

<?php

$doc = new DOMDocument;
$doc->load('example.xml');

$xpath = new DOMXPath($doc);

$tracks = array();

foreach ($xpath->query('//track') as $track) {
$tracks[] = array(
'name' => $xpath->evaluate('string(name)', $track),
'duration' => $xpath->evaluate('number(duration)', $track),
);
}

print_r($tracks);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]