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." &euro; - " // 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

// --------------------- */
?>