ďťż

[php] Problem z uzyciem parsera XML

       

Podstrony


telcocafe

Czesc. No wiec mam taka sprawe - chce napisac prosty sterownik bazy danych opartej na plikach XML - wszystko pieknie, ladnie ale nijak nie moge sobie poradzic z tym nieszczesnym parserem XML - otrzymuje w wyniku dwie tablice z ktorych nie potrafie wyciagnac odpowiednich informacji.
Moze na poczatek kod:
<?php error_reporting(E_ALL); class xmldb { var $database; var $raw_input; var $query; var $fp; var $result; var $parser; var $vals; var $index; function xmldb() { $this->parser = xml_parser_create(); } function db_open() { $this->fp = fopen($this->database, 'r'); $this->raw_input = fread($this->fp, filesize($this->database)); xml_parse_into_struct($this->parser, $this->raw_input, &$this->vals, &$this->index); } function db_query() { //tutaj chcialbym dostac odpowiednio zbudowana tablice... return $tablica; } function db_close() { fclose($this->fp); xml_parser_free($this->parser); } function db_output_raw() { return $this->raw_input; } } //przyklad uzycia: $xdb = new xmldb(); $xdb->database = 'test.xml'; $xdb->db_open(); print_r( $xdb->db_query() ); //print_r aby wyswietlic wynik... $xdb->db_close(); ?>
I przykladowy plik bazy danych:
<?xml version="1.0" encoding="utf-8"?> <database> <Przyklad> <id_1> <Imie>Chuck</Imie> <Nazwisko>Norris</Nazwisko> <Wiek>666</Wiek> </id_1> <id_2> <Imie>Tadeusz</Imie> <Nazwisko>Rydzyk</Nazwisko> <Wiek>666</Wiek> </id_2> </Przyklad> </database>

Teraz moje pytanie brzmi: jak sie dostac do takich wartosci, by to wszystko ladnie uporzadkowac i otrzymac wynik w tablicy. Probuje to zrobic juz od tygodnia, przekopalem caly manual, probowalem wielu przykladow ale zaden nie robil tego co chce, ani zadnego nie udalo mi sie przerobic. Przyklad jaki efekt chcialbym uzyskac, uzywajac w/w pliku xml:
$tablica['Przyklad']['id_1']['Imie'] == 'Chuck'; $tablica['Przyklad']['id_1']['Nazwisko'] == 'Norris'; $tablica['Przyklad']['id_1']['Wiek'] == '666'; $tablica['Przyklad']['id_2']['Imie'] == 'Tadeusz'; $tablica['Przyklad']['id_2']['Nazwisko'] == 'Rydzyk'; $tablica['Przyklad']['id_2']['Wiek'] == '666'; //czyli: $tablica['Nazwa_tabeli']['nazwa_wpisu']['kolumna_wpisu' ] == 'Wartosc'; //itd - aby tworzylo tego typu tablice... //na razie sa dwie tablice - $this->index oraz $this->vals ale nijak nie potrafie //ich przerobic aby dawaly taki efekt jaki potrzebuje
Ma ktos jakis pomysl jak sie do tego zabrac? Moze gdzies jednak znajduje sie odpowiedni przyklad ktory caly plik XML przeksztalca w tego typu tablice? I to najlepiej napisany strukturalnie bo do OOP dopiero podchodze (to bedzie 1 skrypt..)
Od biedy moglbym rzucic ten parser i zastosowac kilka preg_match, byloby to najlatwiejsze ale sie boje o wydajnosc skryptu [i sens...] - no wiec drugie pytanie - jak myslicie, co bedzie szybsze? Wbudowany parser XML czy preg_match i inne preg_* ? (powiedzmy - z podzialem do 100 wpisow/tabele i mniej niz 10 tabel, do 500/wpisow na tabele i mniej niz 100 tabel oraz ponad 500 wpisow na tabele i ponad 100 tabel - przypominam ze wszystkie tabele sa w jednym pliku :>)
Użytkownik Einzeinbleth edytował ten post 18 wrzesień 2006, 16:36


z xml nie kozydtałem, ale czytałem o wbudowanych w PHP elementach obsługi xml - SimpleXML i Domdocument. Może coś Ci to pomoże

Dzieki Mathew, simplexml to jest to :-]
[solved]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.