XPath effettivamente lo uso ma ciò che voglio fare è visualizzare ad esempio una lista degli album (con nome, prezzo e artista) del genere "Hard Rock", quindi i figli del <nodo idn="2">. In poche parole devo ottenere:
Genere: Hard Rock
NomeAlbum4 - Prezzo - Artista
NomeAlbum5 - Prezzo - Artista
Vedi un po' così:
Codice PHP:
<?php
$tuoxml = new SimpleXMLElement('<xml>
<nodo idn="1">
<genere idg="1">Classic Rock</genere>
<album id="1"><nome>...</nome><prezzo>...</prezzo><artista>...</artista></album>
<album id="2"><nome>...</nome><prezzo>...</prezzo><artista>...</artista></album>
<album id="3"><nome>...</nome><prezzo>...</prezzo><artista>...</artista></album>
</nodo>
<nodo idn="2">
<genere idg="2">Hard Rock</genere>
<album id="4"><nome>pippo</nome><prezzo>123</prezzo><artista>topolino</artista></album>
<album id="5"><nome>pluto</nome><prezzo>456</prezzo><artista>paperino</artista></album>
</nodo>
</xml>');
$idg = 2; // id del genere (2 = "Hard Rock")
$nodo = $tuoxml->xpath('nodo[genere[@idg="'.$idg.'"]]'); // seleziono il nodo filtrandolo per il genere
$str = "Genere: <b>".$nodo[0]->genere."</b>" // registro il "genere"
. "<i>(".count($nodo[0]->album)." albums)</i><br>"; // registro il numero di albums presenti
foreach ($nodo[0]->album as $album){ // ciclo i nodi "album" figli del nodo selezionato
$str.=$album->nome." - " // registro il nome di questo album
. $album->prezzo." € - " // registro il prezzo
. $album->artista."<br>"; // registro l'artista
}
echo $str; // stampo la stringa html
/* ------ Output ------ //
Genere: Hard Rock(2 albums)
pippo - 123 € - topolino
pluto - 456 € - paperino
// --------------------- */
?>