Visualizzazione dei risultati da 1 a 2 su 2

Discussione: creazione xml annidato

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    88

    creazione xml annidato

    ho la necessità di creare il file xml da un array o oggetto di n livelli.
    Sono riuscito a creare il doc xml ma sono salvati tutti al primo livello, prende l'array di partenza include anche n-livelli
    Codice PHP:
    class Mioxml
    {
    private 
    $dom null;
    private 
    $radice null;

    public function 
    __construct ()
     {
        
    $this->dom = new DOMDocument('1.0''utf8');
        
    $this->radice $this->dom->createElement('datilog');
     }

    public function 
    getXML($dati)
    {
            
    $this->dom->appendChild($this->radice);
            foreach (
    $dati as $chiave => $valore// per ogni elemento dell'array o dell'oggetto
            
    {
                if (
    is_array($valore) || (is_object($valore))) // se il valore è un sottoarry (sotto-livello)
                
    {
                    
    $sub_array $valore// assegnamento, valore è un sottoarray
                    
    $this->getXML($sub_array);
                } else
                {
                    
    $valore = (string) $valore;
                    
    $chiave = (string) $chiave;
                    try
                    {
                        
    $elemXML $this->dom->createElement(utf8_encode($chiave));
                        
    $this->radice->appendChild($elemXML);
                        
    $testo $this->dom->createCDATASection(utf8_encode($valore));
                        
    $elemXML->appendChild($testo);
                    } catch (
    Exception $e)
                    {
                        
                    }
                }
            }
            
    //foglia, ritornano le chiamate ricorsive (svuotando lo stack).
            
    $xml $this->dom->saveXML(); // restituisce false in caso di fallimento
            
    return ($xml == false null $xml); // restituisce il doc xml o null se fallisce
        
    }

    public function 
    setinfoXML($dati)
        {
            if (!
    $this->checkdatiInfo($dati)) // se non è un array o oggetto
            
    {
                return 
    false// restituisce false
            
    }
            
    $xml $this->getXML($dati);
            if (empty(
    $xml))
            {
                return 
    false;
            }
            
    $this->info $xml;
            return 
    true;
        }

    Codice PHP:
            $array = array('nome' => 'test''dati' => array('recapito' => array('via' => 'dante''CAP' => 'test''super' => array('anni' => '34''345'))));
            
    $log_obj->setinfoXML($array); 
    cioè non riesco a a creare l'etichetta 'recapito' e 'super' ovvero
    codice HTML:
    <recapito>
    <via> dante </via>
    <cap> test </cap>
    <super> 
    <anni> 34, 345 </anni>
    </super>
    </recapito>
    invece mi esce una cosa cosi:
    codice HTML:
    <via> dante </via>
    <cap> test </cap>
    <anni> 34, 345 </anni>
    Ultima modifica di feys88; 28-04-2015 a 15:51

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    88
    il risultato della funzione 'getXML' è:
    codice HTML:
    <?xml version="1.0" encoding="utf8"?>
    <datilog>
    <nome><=!=[=C=D=A=T=A=[test]=]=></nome>
    <via><=!=[=C=D=A=T=A=[dante]=]=></via>
    <CAP><=!=[=C=D=A=T=A=[test]=]=></CAP>
    <anni><=!=[=C=D=A=T=A=[34]=]=></anni>
    </datilog>
    Le etichette che sono padre dei nodi annidati non vengono salvate, come mai?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.