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:
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:
think simple think ringo
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!
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
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!