Si puo' fare un'applicazione PHP che legga un file xml e dato un nodo lo evidenzi sull'albero?
Si puo' fare un'applicazione PHP che legga un file xml e dato un nodo lo evidenzi sull'albero?
La classe DOMDocument di PHP ti permette di gestire il file XML come fosse un albero logico, quindi giostrando un po' con quella dovresti ottenere quello che ti serve.
Resta da capire che cosa intendi con "evidenziare il nodo sull'albero"... o meglio, quale dovrebbe essere l'output di PHP che realizzi quello che chiedi.
Stammi bene...
Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?
When you don't know your next step... improvise
ALTERVISTA WANTS YOU!
Vuoi diventare moderatore su AlterVista? Scopri come...
Ad esempio mi servirebbe una funzione che, dato un nodo radice R e un nodo generico N, disegna graficamente l'albero che ha per radice R e colora di giallo il nodo N...
Per questo riguarda l'albero, puoi stamparlo con questa funzione (attenzione perché è ricorsiva: se il file ha troppi nodi annidati può provocare errori):Per evidenziare il nodo che ti serve, aggiungi un secondo parametro alla funzione stampa_albero, che sarà il tuo nodo di riferimento (ovviamente, prima di chiamare stampa_albero la prima volta, dovrai individuarlo questo nodo). All'inizio del corpo della funzione confronta il nodo attuale (primo parametro) con il nodo di riferimento (secondo parametro): se questi sono uguali, modifica l'output di conseguenza.Codice PHP:
function stampa_albero ($nodo)
{
echo '<blockquote>';
echo '<' . $nodo->nodeName;
$attrib = array();
foreach ($nodo->attributes as attrName => attrValue)
$attrib[] = $attrName . '="' . $attrValue . '"';
echo ' ' . implode (' ', $attrib) . '>';
$figli = $nodo->childNodes;
for ($i = 0; $i < $figli->length; $i++)
stampa_albero ($figli->item($i));
echo '</' . $nodeName . '>';
echo '</blockquote>';
}
$xml = new DOMDocument ();
stampa_albero ($xml->documentElement);
Scusami per il ritardo nella risposta...
Stammi bene...
Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?
When you don't know your next step... improvise
ALTERVISTA WANTS YOU!
Vuoi diventare moderatore su AlterVista? Scopri come...