Schrift
[thread]8704[/thread]

XML Parsing Frage

Leser: 2


<< >> 10 Einträge, 1 Seite
weismat
 2007-01-31 16:41
#73880 #73880
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
Ich benutze XML::Simple, um ein XML Dokumente zu parsen.
Dabei gibt es in dem Dokument Strukturen, die bei einem Dokument für den Tag X einmal und am Tag Y mehrfach auftreten.
Wie kann ich am einfachsten bei diesen Knoten erkennen, ob es sich um ein Array oder nur um ein Element handelt? Beim Umcasten auf ein Array gibt es einen Fehler.
Ich habe auch ForceArray versucht, damit wir nur leider mein XML viel tiefer und entsprechend wird das Lesen aufwendiger.
renee
 2007-01-31 16:45
#73881 #73881
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
# ... jede menge Code ...

unless(ref($knoten)){
print "Es ist ein Skalar!\n";
}
elsif(ref($knoten) eq 'ARRAY'){
print "Es ist ein Array!\n";
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
weismat
 2007-01-31 17:42
#73882 #73882
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
Vielen Dank!
Ich muss mir trotzdem überlegen, was ich am cleversten mache, da ich das auf einigen Ebenen habe...Vielleicht wechsle ich doch den XML Parser...
pktm
 2007-01-31 21:43
#73883 #73883
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
[quote=weismat,31.01.2007, 16:42]Vielen Dank!
Ich muss mir trotzdem überlegen, was ich am cleversten mache, da ich das auf einigen Ebenen habe...Vielleicht wechsle ich doch den XML Parser...[/quote]
Erläutere doch einmal, was du mit deinen EBenen so meinst. Eventuell haben wir ja eine Idee wo der Hase begraben liegen könnte.
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2007-01-31 22:03
#73884 #73884
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Und sage mal genauer, was Du machen möchtest. Vielleicht können wir Dir dann weiterhelfen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ptk
 2007-02-01 01:52
#73885 #73885
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Meine Erfahrung ist, dass man in den sauren Apfel beißen muss und sich XML nicht so einfach mit XML::Simple parsen lässt, sondern man viel Code schreiben muss, wenn man es "richtig" haben will. Mit XPath-Konstrukten (siehe XML::LibXML) lässt sich die ganze Sache etwas leichter ertragen. Generell würde ich empfehlen (wenn man die Möglichkeit hat), auf XML ganz zu verzichten und lieber JSON, YAML, Storable, Data::Dumper o.ä. zu verwenden.
weismat
 2007-02-06 12:33
#73886 #73886
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
Ich bekomme Dateien aus einem fremden System, die auf XML basieren. Die Reports sind im Endeffekt immer noch Cobol-Datenstrukturen. D.h. man weiß ohne DTD nicht, ob es innerhalb der Struktur einen Unterstruktur gar nicht, einmal oder mehrfach gibt.
Erstmal habe ich mir damit beholfen an allen Stellen, wo es gar nicht, einmal oder mehrfach etwas gibt mit exit und ref zu arbeiten - nicht elegant - aber einfach und verständlich. Der Rest des Codes arbeitet dann immer mit Arrays, die kein, ein oder mehrere Elemente enthalten.
In den DTDs gibt es Definition mit minOccurs="0" oder minOccurs="1" und maxOccurs=1 oder maxOccurs="unbounded".
Mit Ebenen meine ich Wiederholgruppen.\n\n

<!--EDIT|weismat|1170758590-->
weismat
 2007-02-06 22:20
#73887 #73887
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
Ich werde mal XML::Smart ausprobieren - das scheint, daß so zu machen, wie ich das brauche...werde posten, nachdem ich es mal ausprobiert habe...
ptk
 2007-02-07 00:37
#73888 #73888
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Da bin ich gespannt. Ich habe in der Distribution XML::Smart::DTD entdeckt und gehofft, dass da jemand endlich das implementiert hat, was ich schon immer haben wollte: automatisches Serialisieren und Deserialisieren zwischen XML und Perl-Datenstrukturen mithilfe einer DTD oder eines anderen XML-Schemas. Leider scheint es das doch nicht zu sein.

Egal, ich benutze mittlerweile nur noch YAML, JSON, Bencode & Co. :-)
weismat
 2007-02-20 13:46
#73889 #73889
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
Wie ich die Doku verstehe, ist das XML::Smart nur für die Ausgabe, nicht aber für das Parsen gedacht - werde wahrscheinlich doch bei XML-Simple bleiben...
<< >> 10 Einträge, 1 Seite



View all threads created 2007-01-31 16:41.