Schrift
[thread]8663[/thread]

geparste XML-Datei irgendwie im Speicher halten?: oder so ähnlich

Leser: 1


<< >> 9 Einträge, 1 Seite
pktm
 2007-01-20 19:43
#73400 #73400
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich parse zur Zeit mit XML::Simple eine 1,4MB große XML-Datei. Jetzt muss ich mein Programm öfters testen und jeder Start des Programms dauer einige Sekunden. Nicht dass das so irrsinnig Problematisch wäre, aber irgendwie stört es mich schon.

Gibt es eine Möglichkeit, wie ich eine einmal geparste XML-Datei ohne erneutes Parsen wieder in mein Programm aufnehmen kann? Kann ich die Datenstruktur vielleicht irgendwie in eine Datei auslagern und diese dann effizienter als das erneute Parsen des XML-Datei einlesen?

Bei Bildern einer Web-Bildergalerie habe ich mal gesehen, dass da mit File::Cache herumgemengt wurde. Eventuell ist sowas möglich?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
sesth
 2007-01-20 22:14
#73401 #73401
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Das bringt Dich vielleicht nicht weiter - aber warum setzt Du nicht einfach bei der XML-Datei an und verkleinerst die für Deine Tests auf eine handhabbare Größe?
Gruß
Thomas
pktm
 2007-01-20 22:17
#73402 #73402
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Das habe ich zu Testzwecken auch gemacht, aber das bringt bei Suchfunktionen, die eigentlich über die ganze Datei laufen sollen nicht wirklich representative Ergebnisse :)
http://www.intergastro-service.de (mein erstes CMS :) )
sesth
 2007-01-20 22:23
#73403 #73403
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Hab mit XML::Simple länger nix gemacht, aber wenn ich mich richtig erinnere, importiert die in einen Hash. Du kannst den Hash dann ja mit tie in eine Datei schreiben. Wenn Du Glück hast, ist das Laden des Hashes per tie schneller als per XML::Simple. Vielleicht bringt das ja was.
Gruß
Thomas
topeg
 2007-01-20 22:32
#73404 #73404
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Dazu kann man "Data::Dumper" nutzen. Das was er auspuckt kannst du als Datei öffnen und mit "eval" wieder einbinden.
Damit umgehst du das aufwändig Parsen des XML.

ungefähr so:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sub save_struct($$)
{
  my ($file,$ref)=@_;
  use Data::Dumper;
  open(OUT,'>',$file) or return 0;
  print OUT Dumper($ref);
  close(OUT);
  return 1;
}

sub load_struct($)
{
  my ($file)=@_;
  local $/='';
  my $VAR1;
  open(IN,'<',$file) or return undef;
  eval(<IN>);
  close(IN);
  return $VAR1;
}
pktm
 2007-01-20 22:38
#73405 #73405
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
[quote=topeg,20.01.2007, 21:32]Dazu kann man "Data::Dumper" nutzen. Das was er auspuckt kannst du als Datei öffnen und mit "eval" wieder einbinden.
Damit umgehst du das aufwändig Parsen des XML.

ungefähr so:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sub save_struct($$)
{
  my ($file,$ref)=@_;
  use Data::Dumper;
  open(OUT,'>',$file) or return 0;
  print OUT Dumper($ref);
  close(OUT);
  return 1;
}

sub load_struct($)
{
  my ($file)=@_;
  local $/='';
  my $VAR1;
  open(IN,'<',$file) or return undef;
  eval(<IN>);
  close(IN);
  return $VAR1;
}
[/quote]
Kann man das auch mit Objekten machen?
http://www.intergastro-service.de (mein erstes CMS :) )
topeg
 2007-01-20 22:45
#73406 #73406
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Nein nicht so einfach. Man kann mit Data::Dumper auch Code exportieren und ich meine auch Objekte, aber dazu muß man ein paar Variablen im Modul richtig setzen. Auswendig wüßte ich es nicht. Wie weit das funktioniert kann ich nicht sagen, da ich es nicht ausprobiert habe.
Du müßtest dich selber mit der Doku zu Data::Dumper auseinadersetzen.
ptk
 2007-01-21 00:38
#73407 #73407
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Objekte werden automatisch richtig serialisiert (soweit sie überhaupt serialisierbar sind). Für Code muss man $Data::Dumper::Deparse=1 setzen.
Ronnie
 2007-01-21 12:54
#73408 #73408
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
CPAN:Storable ist auch zur einfachen Serialisierung gut geeignet.
<< >> 9 Einträge, 1 Seite



View all threads created 2007-01-20 19:43.