Salve a tutti.
Per fare i primi passi nella programmazione a oggetti e nell'xml ho deciso di fare un piccolo form che permetta di inserire ricette e poi le vada a salvare in un file xml.
Ho due problemi:
1) Se aggiungo alcuni caratteri speciali, l'xml mi da errore. Sembra riconoscere < e &, ma non à, ì,...
Ho letto in una guuida sul codice ben formattato di html.it (http://www.html.it/xml/guida/guida_xml_05.htm)
"
Ad esempio, la seguente direttiva di elaborazione:
<?xml version="1.0" encoding="iso-8859-1"?>
abilita l’uso del set di caratteri noto come Latin 1 contenente le lettere accentate ed altri simboli.
"
ma l'errore me lo da comunque.
2) Per passare dal mio file xml ad un "array" di oggetti utilizzo una funzione che ho trovato nel manuale di php. Il mio problema è che volevo mettere un'attributo al "marcatore" ricetta e vorrei che tale attributo diventasse la chiave di quell'oggetto ricetta nel mio array. Come faccio a leggere l'attributo?
Vi faccio vedere il codice che forse è più chiaro:
Esempio del file xml
Funzione che mi trasforma il mio file xml in un "array" di oggetti:codice:<?xml version="1.0" encoding="iso-8859-1"?> <ricettario> <ricetta id="11"> <codice>0012</codice> <nome>proívab dgj</nome> <tipologia>fmds</tipologia> <ingredienti>kdslf>ssasda</ingredienti> </ricetta> <ricetta id="12"> ... </ricetta> </ricettario>
codice:function readDatabase($filename) { // read the XML database of aminoacids $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 through the structures foreach ($tags as $key=>$val) { if ($key == "ricetta") { $molranges = $val; // each contiguous pair of array entries are the // lower and upper range for each molecule definition 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 Ricetta($mol); }
Mi sono persa in un bicchiere d'acqua?![]()

Rispondi quotando
