Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Creazione array utilizzando come indice un'altro array o una stringa

    Ciao a tutti ho il seguente problema:
    voglio leggere un file xml e inserirlo in un array...
    ... quasi tutto fatto tranne la creazione dell'array.
    Lo so, mi sta sfuggendo qualche cosa di semplice ma !!!

    questo è il code
    Codice PHP:
    <?php
     $Path
    ="file.xml";   
     
    $Risultato=array();
     if (
    file_exists($Path))
      {
       
    $Risposta=Array();
       
    $xml = new XMLReader();
       
    $xml->open($Path); 
       
    $NodePath=array();
       
    $NumNodePath=0;
       while(
    $xml->read()) 
        {
         
    $NodeType=$xml->nodeType;   
         if (
    $NodeType==XMLReader::ELEMENT)
          {
           
    $Nome=$xml->name;
           
    $isEmptyElement=$xml->isEmptyElement;
           
    $HasAttribute=$xml->hasAttributes;
           if (
    $NumNodePath==0)
            {
             print 
    "<font color='red'>creo path</font>
    "
    ;
                
    $Risultato[$Nome]=array();
             
    $NumNodePath++;
             
    $NodePath[$NumNodePath]=$Nome;
            }
           else
            {
             
    $NumNodePath++;
             print 
    "<font color='red'>aggiungo path $NumNodePath $Nome</font>
    "
    ;
             
    $NodePath[$NumNodePath]=$Nome;         
            }
             
    $Valore=$xml->readOuterXML();
            if (
    $HasAttribute)
             {
              
    $xml->moveToNextAttribute();
              
    $AttName=$xml->name;
              
    $AttValu=$xml->value;
              print 
    "<font color='red'>aggiungo path $NumNodePath $AttName $AttValu</font>
    "

              
    $Valore="($AttName=$AttValu)$Valore";
             }
          }
         if(
    $NodeType == XMLReader::END_ELEMENT)
          {
           
    $Nome=$xml->name;
           if (isset(
    $Valore) && $Valore!="")
            {
             
    $RelPath="";
             for (
    $N=1$N<=$NumNodePath$N++)
              {
               
    $RelPath=$RelPath."[".$NodePath[$N]."]";
              }
             print 
    "<font color='blue'>RelPath=$RelPath =$Valore</font>
    "
    ;
             unset(
    $NodePath[$NumNodePath]);
             
    $NumNodePath--;
            }
           
    $Valore="";
          }
        }
      }
      
    ?>
    E questo il file xml

    codice:
    <?xml version="1.0"?>
    <voti>
     <materia>italiano</materia>
     <classi>
      <anno>1</anno>
      <sezione>a</sezione>
      <alunni>
       <alunno numero="1">6</alunno>
       <alunno numero="2">5</alunno>
       <alunno numero="3">6</alunno>
       <alunno numero="4">6</alunno>
       <alunno numero="5">3</alunno>
       <alunno numero="6">9</alunno>
       <alunno numero="7">2</alunno>
       <alunno numero="8">6</alunno>
      </alunni>
     </classi>
    </voti>

    Il risulto finalre dovrebbe essere l'array che viene scritto in blue quando si lancia lo script.

    ps: ho lasciato in rosso gli alri output di debug/info.

    Grazie a tutti

  2. #2
    ciao

    hai provato ad usare SimpleXMLElement ( http://php.net/manual/en/class.simplexmlelement.php ) ?

    semplifica notevolmente il parsing e la gestione di una struttura XML dato che ti viene convertita direttamente in un array di PHP.

  3. #3
    Ho notato solo oggi la tua risposta... ora faccio qualche prova. Grazie 10000

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.