[Php-it] da XUL al resto del mondo (una disamina sugli alberi)
Andrea Franceschini
therealmorpheu5 at gmail.com
Tue Apr 10 14:15:10 CEST 2007
Il 10/04/07, Cristiano Verondini<cverondini a deis.unibo.it> ha scritto:
> Curioso. Controlla che la struttura su cui fai il traversal sia come te
> l'aspetti, poi comincia un po' di debug. Se vuoi postare un po' di codice
Con ordine. Lo spezzone di XML:
<ui>
<groupbox>
<grid flex="1">
<columns>
<column/>
<column/>
</columns>
<rows>
<row>
<label value="Here we are"/>
<textbox id="content"/>
</row>
</rows>
</grid>
</groupbox>
</ui>
verificato caricandolo in un SimpleXMLElement e facendone il print_r,
è esattamente quello che mi aspettavo. Il traversal (ricorsivo)
semplificato tanto per provarlo: dovrebbe replicare la struttura
originale solo privata di attributi e valori. loadVirtual è un metodo
che in pratica prende una stringa e ne fa un oggetto SimpleXMLElement.
$node che viene passato è un SimpleXMLElement, la chiamata avviene
passandogli il SimpleXMLElement relativo alla root del sottoalbero
contenente lo XUL.
private function recur_form($node) {
$newnode = $this->core->obj_xml->loadVirtual('<'.$node->getName().'/>');
foreach($node->children() as $child) {
$newnode->addChild($child->getName(), $this->recur_form($child));
}
return $newnode;
}
Il debug l'ho fatto mettendo un print_r($newnode) un attimo prima del
return e il relativo output è
SimpleXMLElement Object
(
)
SimpleXMLElement Object
(
)
SimpleXMLElement Object
(
[column] => Array
(
[0] => SimpleXMLElement Object
(
[0] =>
)
[1] => SimpleXMLElement Object
(
[0] =>
)
)
)
SimpleXMLElement Object
(
)
SimpleXMLElement Object
(
)
SimpleXMLElement Object
(
[label] => SimpleXMLElement Object
(
[0] =>
)
[textbox] => SimpleXMLElement Object
(
[0] =>
)
)
SimpleXMLElement Object
(
[row] => SimpleXMLElement Object
(
[0] =>
)
)
SimpleXMLElement Object
(
[columns] => SimpleXMLElement Object
(
[0] =>
)
[rows] => SimpleXMLElement Object
(
[0] =>
)
)
SimpleXMLElement Object
(
[grid] => SimpleXMLElement Object
(
[0] =>
)
)
SimpleXMLElement Object
(
[groupbox] => SimpleXMLElement Object
(
[0] =>
)
)
da cui l'XML finale è
<?xml version="1.0"?>
<ui><groupbox></groupbox></ui>
E questo è quanto. Sono abbastanza sicuro di non aver sbagliato il
traversal (ma è $tempo che non scrivo cose ricorsive quindi poesse che
mi sia scappato qualcosa). Comunque quel che mi fa pensare di non
averlo sbagliato e che, per alcune chiamate, i subtree sono corretti,
salvo essere potati al secondo livello.
More information about the Php-it
mailing list