Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    24

    Php - Xml leggere solo una parte

    Ciao a tutti,

    volevo chiedere se era possibile leggere tramite php solo una parte del file xml.

    Il mio xml è strutturato all'incirca così:

    <?xml version="1.0"?>
    <database>
    <utente>
    <nome>Luca</nome>
    <cognome>Ruggiero</cognome>
    </utente>
    <utente>
    <nome>Max</nome>
    <cognome>Bossi</cognome>
    </utente>
    <utente>
    <nome>Marco</nome>
    <cognome>Rossi</cognome>
    <indirizzo>via italia 50</indirizzo>
    </utente>
    </database>

    Io ho trovato solo questo esempio che funziona bene e mi stampa i primi 5 :

    <?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 . "
    ");

    $contatore++;
    }
    }

    fclose($apri_xml);
    ?>

    Dato che alcuni file hanno dei tag in più...esiste un modo(magari con un ciclo) che mi permetta di stampare sempre i primi 5 anche non conoscendo i tag all'interno del file?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    24
    Risolto...a chi dovesse interessare,

    Codice PHP:
    $xml simplexml_load_file("percorso file xml"); 
    $contatore 0
    $quanti 1
    foreach(
    $xml->children() as $child){// partirà dal tag utente             
         
    if ($contatore $quanti){                 
              foreach(
    $child->children() as $child2){                  
                  if (
    $child2->getName() == "Nome"){                           
                      
    $string1 $child2;                   
                   }                   
                  if (
    $child2->getName() == "Cognome"){                           
                      
    $string2 $child2;                  
                   }                   
               ......
    ecc            
          
    }            
           
    $contatore++;       


  3. #3

    Re: Php - Xml leggere solo una parte

    Ciao a tutti,

    spero di aver beccato la sezione giusta del forum

    Ho un file xml tipo questo

    <CATALOGO>
    <PRODOTTI>
    <PRODOTTO>
    <ID>1</ID>
    <NOME>Casco</NOME>
    <IMMAGINE>
    <IMMAGINE1>...../casco.jpg</IMMAGINE2>
    <IMMAGINE2>...../casco2.jpg</IMMAGINE2>
    </IMMAGINE>
    <CARATTERISTICHE>
    <CARATTERISTICA nome="PRODUTTORE">blabla</FEATURE>
    <CARATTERISTICA nome="MODELLO">SENZA VISIERA</FEATURE>
    </CARATTERISTICHE>
    </PRODOTTO>
    </PRODOTTI>
    </CATALOGO>

    E sto cercando d'importarlo tramite una funzione php nel mio DB.

    Tutto ok per quanto riguarda i campi semplici tipo ID e NOME...sto uscendo pazzo invece per importare solo IMMAGINE1 o IMMAGINE2 ed il valore della caratteristica PRODUTTORE (cioè nel mio DB vorrei finisse blabla)

    Questo è il codice php che sto utilizzando per importare i campi ID e NOME

    $file = $_FILES['filexml'];
    $xml = simplexml_load_file($file['tmp_name']);
    $listprodotti = $xml->prodotti;
    foreach ($listprodotti->prodotto as $prodotto)

    {

    //Read Info Product
    $id = $prodotto->ID;
    $name = $prodotto->NOME;


    QUALCUNO PUO' AIUTARMI???



    Originariamente inviato da step86
    Ciao a tutti,

    volevo chiedere se era possibile leggere tramite php solo una parte del file xml.

    Il mio xml è strutturato all'incirca così:

    <?xml version="1.0"?>
    <database>
    <utente>
    <nome>Luca</nome>
    <cognome>Ruggiero</cognome>
    </utente>
    <utente>
    <nome>Max</nome>
    <cognome>Bossi</cognome>
    </utente>
    <utente>
    <nome>Marco</nome>
    <cognome>Rossi</cognome>
    <indirizzo>via italia 50</indirizzo>
    </utente>
    </database>

    Io ho trovato solo questo esempio che funziona bene e mi stampa i primi 5 :

    <?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 . "
    ");

    $contatore++;
    }
    }

    fclose($apri_xml);
    ?>

    Dato che alcuni file hanno dei tag in più...esiste un modo(magari con un ciclo) che mi permetta di stampare sempre i primi 5 anche non conoscendo i tag all'interno del file?

    Grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.