Visualizzazione dei risultati da 1 a 6 su 6

Discussione: PHP e XML

  1. #1

    PHP e XML

    Ciao,
    come si fa in php 4.0 a manipolare file xml senza installare alcun modulo aggiuntivo (sullo spazio web non posso installare nulla)?
    E' possibile o è necessario php 5.0?

    Ciao e grazie. :gren:

  2. #2

  3. #3

    continua..

    Innanzi tutto grazie per l'aiuto.
    Premetto che la mia conoscenza del php e di xml è scarsa: perdonatemi eventuali svarioni.


    Ipotizzando di avere un file xml di questo tipo:

    <?xml version='1.0' standalone='yes'?>
    <threads>
    <thread>
    <path>00</path>
    <titolo>Macroarea 0</titolo>
    </thread>
    <thread>
    <path>01</path>
    <titolo>Macroarea 1</titolo>
    </thread>
    <thread>
    <path>02</path>
    <titolo>Macroarea 2</titolo>
    </thread>
    </threads>

    e del codice php così scritto:

    $filename="../public/forum_data/_des.xml";
    $handle=fopen($filename, "r");
    $input=fread($handle, filesize($filename));
    fclose($handle);
    $parser=xml_parser_create();
    xml_parse_into_struct($parser, $input, $vals, $index);
    xml_parser_free($parser);

    Come faccio a recuperare l'output del parser? Come è strutturato? In una matrice? E se sì, quali sono gli indici di

    tale matrice? I tag xml?

    Ciao e grazie!

  4. #4
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    adattando un esempio trovato sul manuale:

    codice:
    class AminoAcid {
        var $path;
        var $titolo;
        function AminoAcid ($aa) {
            foreach ($aa as $k=>$v)
                $this->$k = $aa[$k];
        }
    }
    function readDatabase($filename) {
        // legge il database degli aminoacidi
        $data = implode("", file($filename));
        $parser = xml_parser_create();
        xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
        xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
        xml_parse_into_struct($parser, $data, $values, $tags);
        xml_parser_free($parser);
        // loop attraverso la struttura
        foreach ($tags as $key=>$val) {
            if ($key == "thread") {
                $molranges = $val;
                // ciascuna coppia di elementi della matrice contigui
                // sono il limite inferiore e superiore per la definizione di ciascuna molecola
                for ($i=0; $i < count($molranges); $i+=2) {
                        $offset = $molranges[$i] + 1;
                    $len = $molranges[$i + 1] - $offset;
                    $tdb[] = parseMol(array_slice($values, $offset, $len));
                }
            } else {
                continue;
            }
        }
        return $tdb;
    }
    function parseMol($mvalues) {
        for ($i=0; $i < count($mvalues); $i++)
            $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"];
        return new AminoAcid($mol);
    }
    $db = readDatabase("test.xml");
    echo "<pre>\n";
    print_r($db);
    echo "</pre>\n";
    think simple think ringo

  5. #5
    L'avevo vista ma nn è che l'ho proprio capita...

    Il mio problema è questo:
    ho sta funzione
    xml_parse_into_struct($parser, $input, $vals, $index)
    che suppongo trasformi il contenuto xml di $input in una struttura; dalla documentazione mi risulta che
    tale struttura sia una matrice. Ora mi chiedo: come sono organizzati i dati in questa matrice?
    Non posso recuperarli con un qualcosa che assomigli a variabile=matrice[x][y]? E poi perchè esistono due
    matrici di output e non una sola?

    Ciao!

  6. #6
    Toc toc!?! Help, please!

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.