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

    [PHP] leggere file xml che agisce da database

    il mio problema è il seguente : da un file index.php voglio leggere certi contenuti che sono salvati nel file post.xml

    post.xml
    codice:
    <?xml version="1.0" encoding="UTF-8" ?>
    
    <root>
    <article>
    <author>
    	pippo
    </author>
    <post>
    contenuto del post di pippo
    </post>
    </article>
    
    <article>
    <author>
    	pluto
    </author>
    <post>
    contenuto del post di pluto
    </post>
    </article>
    </root>
    girovagando per internet ho trovato questo script che dovrebbe leggere i tag xml e caricarli , e l'ho inserito in index.php :
    Codice PHP:
    <?php 
    //File da includere 
    $filename="post.xml"
    //Se il file non esiste o non è raggiungibile 
    if(!($fp fopen"$filename"r"))) 
    die(
    "Il file non esiste o non può essere aperto."); 
    //Conto gli elementi che trovo all'interno dell xml 
    $contatore_persone 0
    //Inizializzo l'array di elementi trovati 
    $elemento_xml = array(); 
    //Inizializzo lo status a vuoto 
    $xml_stato_tag_corrente ''

    //Funzione per inizio del Nodo dell'elemento 
    function startElementHandler$parser$nome_elemento$attributi_elemento ){ 
    global 
    $contatore_persone
    global 
    $elemento_xml
    global 
    $xml_stato_tag_corrente
    $xml_stato_tag_corrente $nome_elemento

    //Funzione per la fine del Nodo dell'elemento, con incremento del contatore di elementi trovatati 
    function endElementHandler$parser$nome_elemento ){ 
    global 
    $contatore_persone
    global 
    $elemento_xml
    global 
    $xml_stato_tag_corrente
    $xml_stato_tag_corrente ''
    //Il nodo principale del XML che voglio leggere è specificato con l'etichetta seguente 
    if( $nome_elemento == "URL" 
    $contatore_persone++; 

    //Funziona che recupera le informazioni del nodo se questo è uguale a LOC 
    function characterDataHandler$parser $data ){ 
    global 
    $contatore_persone
    global 
    $elemento_xml
    global 
    $xml_stato_tag_corrente
    //Se all'interno del nodo trov nulla esco dalla funzione 
    if( $xml_stato_tag_corrente == '' 
    return; 
    //Se all'interno del nodo corrente trovo l'etichetta che mi interessa ne prendo le informazioni 
    if( $xml_stato_tag_corrente == "LOC" 
    $elemento_xml[$contatore_persone]["loc"] = $data

    if( !(
    $xml_parser xml_parser_create()) ) 
    die(
    "Couldn't create XML parser!"); 
    //Funzione che definisce l'inizio e la fine del nodo 
    xml_set_element_handler($xml_parser,'startElementHandler','endElementHandler'); 
    //Funzione che definisce il nodo di cui vogliamo conoscere le informazioni 
    xml_set_character_data_handler($xml_parser"characterDataHandler"); 
    //Inizializzo la lettura del file fino a quando non finise il file 
    while( $data fread($fp4096) ){ 
    if( !
    xml_parse($xml_parser$datafeof($fp)) ){ 
    break; 


    xml_parser_free($xml_parser); 
    //Scorro l'arrei di informazioni recuperate al fine di mostrarle a video 
    for( $i=$i $contatore_persone ; ++$i ){ 
    echo 
    $elemento_xml[$i]["loc"] . "
    "


    ?>
    ovviamente non parte .....consigli?
    http://lucaardiz.altervista.org

  2. #2
    Guarda è molto semplice con xPath, di seguito un'esempio con il tuo codice:

    Codice PHP:

    $xml 
    simplexml_load_file("post.xml");

           foreach(
    $xml->xpath("root/article") as $dati)
        {
          
    $autore $dati->author;
          
    $post $dati->post;
         } 
    In questo modo la variabile $autore contiene l'array di tutti gli autori e $post tutti i post contenuti nel file.

    Prova e fammi sapere.

    Ciao

  3. #3
    ho provato il codice ma nonostante abbia provato diversi metodi non riesco assolutamente a stampare il contenuto di questi array...mi sa che c'è un errore
    [PHP]
    $xml = simplexml_load_file("post.xml");

    foreach($xml->xpath("root/article") as $dati)
    {
    $autore = $dati->author;
    $post = $dati->post;


    }

    echo $autore[0];
    echo $post[0];
    http://lucaardiz.altervista.org

  4. #4
    ho risolto nel caso servisse a qualcuno mi è bastato il // nel codice di intimoviro
    grazie di tutto!

    Codice PHP:
    $xml simplexml_load_file("post.xml"); 

    foreach(
    $xml->xpath("//article") as $dati

    $autore $dati->author
    $post $dati->post

    http://lucaardiz.altervista.org

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.