Newsgroup: it.comp.www.php
Titolo: Array 2 XML

Senza che sto a reinventare la ruota, conoscete una classe
che mi permetta di convertire un array multidimensionale in
XML?
Qualcosa tipo:
[nomenodo] = array (
   [utenti] = array (
      [utente] = array (
          [1] = array (
               [nome] = 'Gandalf'
               )
          [2] = array (
               [nome] = 'Frodo'
)
Deve tirar fuori un Xml simile:
<nomenodo>
   <utenti>
      <utente>
         <nome>Gandalf</nome>
      </utente>
      <utente>
         <nome>Frodo</nome>
Ho provato decine di funzioni ma han tutte
problemi a gestire array multidimensionali
dove la chiave è numerica e non alfanumerica
O ripetono troppe volte il nome del nodo superiore
oppure forzano la stringa in "unknown_1" _2, etc etc
devo farla da per me o esiste qualche cosa di simile?

 ti può essere utile
Preferivo evitare di usare tale classe.
Comunque, sto facendo alcuni test e non mi pare riesca a convertire
correttamente array di questo tipo:
$arr = array(
    'clienti' = array(
        'cliente' => array(
            array('nome' => 'Gandalf')
           ,array('nome' => 'Frodo')
        )
    )
);
mi genera questo
<clienti>
    <cliente>
       <XML_Serializer_Tag>
          <nome>Gandalf</nome>
       </XML_Serializer_Tag>
       <XML_Serializer_Tag>
          <nome>Frodo</nome>
       </XML_Serializer_Tag>
    <cliente>
<clienti>
ovvero un livello di troppo.
Non volevo andare brutalmente di foreach...
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito è di fare il possibile per la
salvezza degli anni nei quali viviamo,
sradicando il male dai campi che conosciamo.

)
Per come lo definisci, cosi' non si puo' fare in modo semplice. Come lo
gestiresti il caso di
	utente => array(
		1 => array(
			'ciccio','pippo','pluto'
		),
	);
?
L'unico modo che mi viene in mente e' nidificare utente:
<root>
	<nomenodo>
		<utenti>
			<utente>
				<utente>
					<nome>Gandalf</nome>
					<colore>Grigio</colore>
				</utente>
				<utente>
					<nome>Frodo</nome>
				</utente>
			</utente>
		</utenti>
	</nomenodo>
</root>
...cosi' almeno esiste una chiusura, e si puo' esprimere in termini di
ricorsione senza ammazzarsi di "if".
Ah, e poi devi racchiudere tutto in un livello "extra" per assicurarti
che l'albero abbia una sola radice, come ho fatto li' sopra.
Leonardo
-- 
The thoughts of others were light and fleeting,
Of lovers' meeting, or luck, or fame.
Mine were of trouble, and mine were steady:
So I was ready when trouble came.

 </root>
C'è un "utente" di troppo, ovvero quello esterno.
Comunque credo di aver risolto specificando "mode" = "simplexml"
alla classe PEAR.


C'è un "utente" di troppo
Dal tuo punto di vista sì :-)
Ti posso buttare giu' una funzione che nidifica 'correttamente', e poi
tu puoi metterci i necessari IF. Non sarà semplicissimo, io temo.


 tu puoi metterci i necessari IF. Non sarà semplicissimo, io temo.
Non ti scomodare, ho risolto con XML_Serializer.
Sembra fare il suo lavoro.
Almeno con la stessa struttura di array riesco a sparar
fuori sia XML che Json.
Devo solo capire come aggiungere degli attributi ai nodi senza spaccare
tutto il resto.
Credo che inserirò delle chiavi particolari, tipo:
$array['ATTRIBUTE:tipo'] = 'ciao';
per poi sparare tutto ad una mia funzione che fa da wrapper tra
me e XML_Serializer
