Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Php e xml

  1. #1

    Php e xml

    Ciao a tutti.
    Spero che qualcuno possa aiutarmi.
    Sono abbastanza brava nell'uso del php, ma non capisco assolutamente niente di xml.
    Avendo dei file xml, come si visualizzano utilizzando il php?
    C'è uno script o qualcosa del genere?
    Grazie a chi mi risponderà.
    Ciao ciao.

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ciao, c'è questo:

    http://fr.php.net/manual/it/ref.xml.php

    poi per l'applicazione pratica (spero di non essere lapidato) ti do il link a un'articolo che ho scritto sul mio sito...

    ciao

    http://www.gianiaz.net/articoli/RSS/index.php

  3. #3
    Ci guardo subito.
    Grazie miiiileeeeeeeee.

  4. #4
    Originariamente inviato da gianiaz
    ciao, c'è questo:

    http://fr.php.net/manual/it/ref.xml.php

    poi per l'applicazione pratica (spero di non essere lapidato) ti do il link a un'articolo che ho scritto sul mio sito...

    ciao

    http://www.gianiaz.net/articoli/RSS/index.php
    Ciao gianiaz.
    Visto che sei informatissimo e gentilissimo ti chiedo un altra cosa.

    Ho un problema col parser php per xml, praticamente vorrei estrarre i dati da un database xml e metterli in una pagina php, il mio problema è che quando vado a dire al parser in quale tag deve effettuare la ricerca(nel mio caso deve cercare <nome> all'interno di <item>)lui me ne trova più di uno per ogni item xke all'interno di item ci sono dei sottonodi in cui poi ci sono altri campi chiamati ugualmente nome.come faccio ad escludere questi sottonodi dalla ricerca?
    praticamente il mio datatbase xml è cosi composto:

    <item>
    <name>mimmo</name>
    <eta>12</eta>
    <professione>muratore</professione>
    <famiglia>
    <name>albertini</name>
    </famiglia>
    </item>

    come faccio ad escludere dalla ricerca albertini e prendere solo mimmo come tag name, in pratica ad escludere il sottonodo dalla ricerca?

    Spero di essere stata chiara, almeno lo spero.
    Ciao.

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    scusa ho letto solo ora, e non ho molto tempo al momento...

    comunque se usi la classe che ti ho passato i dati verranno messi in un'array, la cosa + veloce che mi viene in mente è quella di non leggere l'array dove l'indice è uguale a "famiglia".


    spero di essere stato utile...

    ciao

  6. #6
    Originariamente inviato da gianiaz
    scusa ho letto solo ora, e non ho molto tempo al momento...

    comunque se usi la classe che ti ho passato i dati verranno messi in un'array, la cosa + veloce che mi viene in mente è quella di non leggere l'array dove l'indice è uguale a "famiglia".


    spero di essere stato utile...

    ciao
    Ciao, rispondi pure quando hai un pò di tempo a disposizione.

    Il mio problema è che io vorrei leggere entrambi i tag name, sia quello dove c'è scritto 'mimmo', sia quello dove c'è 'albertini'.
    Ovviamente vorrei metterli in 2 variabili diverse mentre chiamandosi tutti e 2 tag=name il parser me li mette insieme.

    P.s. Sai dove posso trovare materiale sulle xquery, dato che vorrei imparare ad estrarre solo determinati dati da un file xml?

    Ciao ciao.

  7. #7
    Allora, più che xquery devi impararti bene xpath (path per l'accesso ai tree xml) che per quanto semplice è fondamentale. Comunque sia trovi praticamente tutto in forma sintetica ma abbastanza completa sul sito del W3Shools per quanto riguarda invece l'accesso di xml da php puoi provare ad usare questa classe. Spero di esser stato d'aiuto.

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    non so se con le dritte di WebHawk.it hai risolto... io per mio diletto ho modificato la classe, se hai problemi a capirla chiedi pure...

    rssParserClass.php
    codice:
    <?php
    class RSSParser {
    
       var $insideitem = FALSE;
       var $counter = 0;
       var $content = Array();
       var $tag = "";
       var $name = "";
       var $surname = "";
       var $description = "";
       var $link = "";
    
       function startElement($parser, $tagName, $attrs) {
           if ($this->insideitem) {
             if($tagName == "FAMIGLIA") {
               $this->famigliaflag = TRUE;
             }
             $this->tag = $tagName;
           } elseif ($tagName == "ITEM") {
               $this->insideitem=TRUE;
               $this->counter++;
           }
       }
    
       function endElement($parser, $tagName) {
           if ($tagName == "ITEM") {
    
               $this->content[$this->counter]["name"]=htmlspecialchars(trim($this->name));
               $this->content[$this->counter]["surname"]=htmlspecialchars(trim($this->surname));
               $this->content[$this->counter]["professione"]=htmlspecialchars(trim($this->professione));
               $this->content[$this->counter]["eta"]=htmlspecialchars(trim($this->eta));
               $this->name = "";
               $this->famiglia = "";
               $this->eta = "";
               $this->professione = "";
               $this->insideitem = FALSE;
           }
           if ($tagName == "FAMIGLIA") {
               $this->famigliaflag=FALSE;
           }
       }
       function characterData($parser, $data) {
           if ($this->insideitem) {
               switch ($this->tag) {
                   case "NAME":
                   if($this->famigliaflag) {
                     $this->surname .= $data;
                   } else {
                     $this->name .= $data;
                   }
                   break;
                   case "ETA":
                   $this->eta .= $data;
                   break;
                   case "PROFESSIONE":
                   $this->professione .= $data;
                   break;
                   case "FAMIGLIA":
                   $this->famiglia .= $data;
                   break;
               }
           }
       }
    }
    index.php
    codice:
    <?php
    include_once("rssParserClass.php");
    $xml_parser = xml_parser_create();
    $rss_parser = new RSSParser();
    xml_set_object($xml_parser,&$rss_parser);
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "characterData");
    $fp = fopen("xml.txt","r")
       or die("Error reading RSS data.");
    while ($data = fread($fp, 4096))
       xml_parse($xml_parser, $data, feof($fp))
           or die(sprintf("XML error: %s at line %d",
               xml_error_string(xml_get_error_code($xml_parser)),
               xml_get_current_line_number($xml_parser)));
    fclose($fp);
    xml_parser_free($xml_parser);
    
    echo "<pre>";
    print_r($rss_parser->content);
    echo "</pre>";
    ?>
    nel file xml.txt ho messo l'esempio che hai fatto tu, e il risultato è il seguente:
    codice:
    Array
    (
        [1] => Array
            (
                [name] => mimmo
                [surname] => albertini
                [professione] => muratore
                [eta] => 12
            )
    
    )
    ciao

  9. #9
    Grazie WebHawk.it, quel link ho visto che è utilissimo, ho un bel pò di roba da studiare.

    Gianiaz, sei davvero un grande.
    Ha prima vista ho capito come hai ragionato con lo script della classe, mi rammarico di non averci pensato nemmeno lontanamente.
    Però non sono una geniaz come te.
    Adesso me lo studio per bene e mi metto al lavoro, poi magari ti faccio sapere.

    Grazie mileeeeeeeeee.
    Ciao grande Geniaz.

  10. #10
    Ciao.
    Vorrei chiedere un'altra cosa.

    Sto cercando di imparare xpath come mi ha consigliato WebHawk.it per estrarre i dati che mi servono da xml, ma ho delle difficoltà nel reperire una buona guida sul web.

    Il problema principale è che non capisco come integrare xpath col ottimo parser in php postato sopra.
    Mi servirebbe anche un piccolissimo esempio di utilizzo di quel parser usando xpath o xquery per estrapolare solo determinati dati.

    Prima di postare sul forum ho girato in lungo e largo la rete ma di esempi di integrazione di xpath o xquery con i parser php nemmeno l'ombra.

    Ciao, spero bene.

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.