• User Newbie

    Php - Xml leggere solo una parte

    Ciao a tutti,

    sono nuovo del forum e spero di scrivere nella sezione corretta.

    Ho un problema con la lettura di più file xml. Devo trovare un modo per far sì che in php venga letto solo la prima parte dell'XML. Mi spiego meglio...
    Ho diversi xml nel quale sono contenute diverse informazioni. Vorrei estrapolare da ognuno solo la prima parte(che sarebbe quella più aggiornata). Per ora ho trovato solo questo esempio che calza a pennello, ma non funziona con tutti i file, perchè ovviamente i tag possono essere diversi:

    <?PHP 
    $quanti    = 5; 
    $indice = 256; 
    $contatore = 0;
      $apri_xml = fopen("database.xml", 'r'); 
     while(!feof($apri_xml)) {    
             $buffer = ltrim(Chop(fgets($apri_xml, $indice)));     
                  if (($buffer == "<utente>") && ($contatore < $quanti))     {           
                          $nome = ltrim(Chop(fgets($apri_xml, $indice)));         
                          $cognome = ltrim(Chop(fgets($apri_xml, $indice)));         
                          $nome = ereg_replace( "<nome>", "", $nome );        
                          $nome = ereg_replace( "</nome>", "", $nome );         
                          $nome = ereg_replace( "\"", "\\\"", $nome );          
                          $cognome = ereg_replace( "<cognome>", "", $cognome );         
                          $cognome = ereg_replace( "</cognome>", "", $cognome );          
                          echo($nome . " " . $cognome . "<br>");          
                         $contatore++;     
                  } 
     }
    ?>
    

    Qualcuno può aiutarmi?

    Grazie


  • User Newbie

    @§ifodia§ said:

    Ciao a tutti,

    sono nuovo del forum e spero di scrivere nella sezione corretta.

    Ho un problema con la lettura di più file xml. Devo trovare un modo per far sì che in php venga letto solo la prima parte dell'XML. Mi spiego meglio...
    Ho diversi xml nel quale sono contenute diverse informazioni. Vorrei estrapolare da ognuno solo la prima parte(che sarebbe quella più aggiornata). Per ora ho trovato solo questo esempio che calza a pennello, ma non funziona con tutti i file, perchè ovviamente i tag possono essere diversi:

    ><?PHP 
    $quanti    = 5; 
    $indice = 256; 
    $contatore = 0;
      $apri_xml = fopen("database.xml", 'r'); 
     while(!feof($apri_xml)) {    
             $buffer = ltrim(Chop(fgets($apri_xml, $indice)));     
                  if (($buffer == "<utente>") && ($contatore < $quanti))     {           
                          $nome = ltrim(Chop(fgets($apri_xml, $indice)));         
                          $cognome = ltrim(Chop(fgets($apri_xml, $indice)));         
                          $nome = ereg_replace( "<nome>", "", $nome );        
                          $nome = ereg_replace( "</nome>", "", $nome );         
                          $nome = ereg_replace( "\"", "\\\"", $nome );          
                          $cognome = ereg_replace( "<cognome>", "", $cognome );         
                          $cognome = ereg_replace( "</cognome>", "", $cognome );          
                          echo($nome . " " . $cognome . "<br>");          
                         $contatore++;     
                  } 
     }
    ?>
    >```
    
    Qualcuno può aiutarmi?
    
    Grazie
    
    
    
    Ho risolto!!!! Grazie comunque!
    
    Se potesse interessare a qualcuno:
    
    [PHP]
    $xml = simplexml_load_file("percorso file xml");
    $contatore = 0;
    $quanti = 1;
    foreach($xml->children() as $child){// partirà dal tag InizioXML
                if ($contatore < $quanti){
                    foreach($child->children() as $child2){
                     if ($child2->getName() == "Nome"){
                              $string1 = $child2;
                      }
                      if ($child2->getName() == "Cognome"){
                              $string2 = $child2;
                     }
                      ......ecc
               }
               $contatore++;
          }
    [/PHP]
    
    In pratica un ciclo per ogni nodo da visualizzare con una if per limitare la visualizzazione a una sola volta.
    Per eventuali chiarimenti scrivetemi pure.
    
    Saluti