2009-01-28 4 views
31

Ich habe viele der Perl XML Parser ausprobiert. Ich habe mich sehr für den Sablotron Parser interessiert, aber es ist so schwierig, ihn auf einer Windows-Box zu installieren. Zur Zeit habe ich angefangen, XML::LibXML und XML::LibXSLT zu verwenden, von denen scheinen, alles zu tun, was ich brauche.Was ist der beste XML-Parser für Perl?

Sie scheinen auch ziemlich Standard zu sein. Gibt es bessere XML-Parser als diese?

+2

Der "beste" XML-Parser erfüllt Ihre Anforderungen. Sie haben nicht den Typ des XML-Parsings erwähnt, den Sie brauchen: linear (SAX), Baum (DOM), iterativ (Pull-Parser) usw., so dass Vorschläge schwierig sein werden. –

Antwort

24

Ich denke, Sie verwenden eine ziemlich gute. XML::LibXML, Matt Sergeant und Christian Glahns Perl-Schnittstelle zu Daniel Velliards libxml2 ist einer der schnelleren XML-Parser, die ich kenne.

+0

Danke, nur nach der Klärung, dass ich das richtige Werkzeug verwende – Xetius

+0

Ja. Du verwendest definitiv nichts Ungewöhnliches. Es ist ziemlich nah am Standard. – mmcdole

10

Wenn Sie Geschwindigkeit, Leistung oder Funktionen benötigen, ist XML :: LibXML der richtige Weg. Wenn Sie jedoch auf Benutzerfreundlichkeit Wert legen, ist XML::Simple eine praktikable Alternative.

+0

Ja. Aber Vorsicht: Nur weil es Simple heißt, heißt das nicht, dass Sie die Dokumentation nicht lesen sollten. – innaM

+0

In der Tat - einfach (wie hier verwendet) ist ein relativer Begriff .... –

+0

In der Tat. XML :: Simple ist wahrscheinlich eines der besten "einfachen" Analysewerkzeuge, die ich seit langem verwende. :) –

5

Nach meiner Erfahrung XML::Simple ist am besten für schnelles und dreckiges Parsing von XML. Wir verwenden es für die Analyse von Daten von Drittanbietern, die nicht immer dem XML-Standard entsprechen. XML :: Simple löst informative Fehler aus und bringt Sie extrem schnell zum Laufen.

12

Es hängt wirklich von Ihren Bedürfnissen ab, wie die Leute gesagt haben. Um XML-Dateien mit einer Größe von ~ 100 MB zu analysieren (Gen-Annotationen von TAIR, 1 Datei pro Chromosom), verwendete ich das Modul XML::Twig von mirod, mit dem Sie Callbacks einrichten können, um die Elemente, die Sie interessieren, zu analysieren und jedes Sub-Dokument als XML darzustellen: : Einfacher Baum. Es kombiniert die Vorteile eines SAX-Parsers (Scannen der Datei als Stream) mit einem DOM-Parser (einfacher mit den interessanten Stücken arbeiten).

1

Ich denke, Sie sollten XML::MyXML versuchen, auch. Es ist sehr einfach zu bedienen.

4

(Eigentlich ist es keine Antwort, sondern ein Kommentar - aber kann ich nicht kommentieren ...)

XML :: Simple hier erwähnt wurde.
(Ich weiß, dass es von einigen Jahren vor wenigen ist, aber das erschien heute in Google up ...)

Allerdings ist es Website (http://metacpan.org/pod/XML::Simple) sagt nun:

Status dieses Moduls

Die Von der Verwendung dieses Moduls in neuem Code wird abgeraten. Andere Module sind verfügbar, die einfachere und konsistentere Schnittstellen bereitstellen. Insbesondere wird XML :: LibXML empfohlen.

Die Hauptprobleme bei diesem Modul sind die große Anzahl von Optionen und die willkürliche Interaktion dieser Optionen - oft mit unerwarteten Ergebnissen.

Patches mit Fehlerkorrekturen und Dokumentationskorrekturen sind willkommen, aber es ist unwahrscheinlich, dass neue Features hinzugefügt werden.

0

Ich biete eins an, SOLLTE NICHT verwendet werden: XML::Parser.

Es erweitert automatisch HTML-Entitäten zu ihren UTF-8-Entsprechungen, und die Option, dieses Verhalten zu deaktivieren, funktioniert nicht für die charakteristischste aller Entitäten, &.

Zusätzlich sein XMLDecl-Parser interpretiert und zeigt das standalone Attribut im <?xml ... ?> Block als "standalone"="1", was absolut falsch ist - es sollte "standalone"="yes" sein.

Verwandte Themen