dabear Skrevet 4. desember 2004 Del Skrevet 4. desember 2004 Jeg har laga et script som gjør om xml til arrays i php, der attributene ligger i array['attributs'] og innholdet ligger i array['value']. Hvordan får jeg fks array['serverarray'] til å legge seg inni array['configure'] ? XML-fil: <?xml version="1.0"?> <configure> <serverarray default="_GET" test="test">_GET</serverarray> </configure> PHP: <pre><?php class xmlget { public $file, $lastKey; public $depth = array(); private $out = array(), $xmlParser; public function __construct($file) { if(!$this->file = file_get_contents($file)) { throw new exception('Kunne ikke åpne xmlfil'); } } public function __destruct() { echo '<pre>'; print_r($this->out); echo '</pre>'; xml_parser_free($this->xmlParser); } function elemBegin($parser, $name, $attrs) { $this->lastKey = $name; $this->out[$name]['attributs'] = $attrs; } function elemEnd($parser, $name) { /*$this->depth[$parser]--;*/ } function elemData($parser, $data) { $data = trim($data); if(!(empty($data))) { $this->out[$this->lastKey]['value'][] = $data; } } function parse() { $this->xmlParser = xml_parser_create_ns(); xml_parser_set_option($this->xmlParser, XML_OPTION_CASE_FOLDING, 0); xml_set_element_handler($this->xmlParser, array($this, 'elemBegin'), array($this, 'elemEnd')); xml_set_character_data_handler($this->xmlParser, array($this, 'elemData')); if (!xml_parse($this->xmlParser, $this->file)) { throw new exception(sprintf("XML error: %s på linje %d", xml_error_string(xml_get_error_code($this->xmlParser)), xml_get_current_line_number($this->xmlParser))); } } } try { $xml = new xmlget('xml.xml', 'r'); $xml->parse(); } catch(exception $xmlerror) { echo 'Det skjedde desverre en feil:' . $xmlerror->getMessage(); } ?></pre> Dette vil gi outputen: Array ( [configure] => Array ( [attributs] => Array ( ) ) [serverarray] => Array ( [attributs] => Array ( [default] => _GET [test] => test ) [value] => Array ( [0] => _GET ) ) ) mens jeg ønsker at den gir følgende: Array ( [configure] => Array ( [attributs] => Array ( ) [serverarray] => Array ( [attributs] => Array ( [default] => _GET [test] => test ) [value] => Array ( [0] => _GET ) ) ) ) Hvordan?? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå