Thread XML::DOM / XML::Semanticdiff: why oh why don't they DWIM
(12 answers)
Opened by dukeofnukem at 2007-03-20 13:58
Alohá!
Bin grade dabei einen XML-Differ zu bauen der ein wenig konfigurierbare Logik enthalten soll um deltas zwischen Referenzen und Ergebnissen ausblenden zu können wenn diese erwartet und ok sind. Aber ins Detail: Problem 1: Wenn ich zwei XMLs durch XML::SemanticDiff jage, erhalte ich ein array von hashrefs auf die deltas; ein hash sieht etwa so aus (Data::Dumper): Hier ist lediglich interessant: In 'context' steht der Pfad in XPath-Notation. Wenn ich jetzt versuche an den Wert der Node zu gelangen: Code: (dl
)
1 sub analyze_delta { habe ich folgende Ausgabe bzgl. des 'getData': Code: (dl
)
Can't locate object method "getData" via package "XML::DOM::Element" at ../XmlDiffer.pm line 126. Das war Problem 1... Problem 2: ist die Tatsache, daß XML::SemanticDiff buggy zu sein scheint; es liefert mir teilweise einen Pfad der mit .../element[2] endet obwohl es dort nur ein Element gibt; entsprechend findet meine sub kein solches Element im Tree. Problem 3: liegt wiederum bei XML::SemanticDiff. Beim diffen einiger XMLs wirft er mir warnings bzgl. Code: (dl
)
Use of uninitialized value in string eq at /users/user4/usr/lib/perl5/site_perl/XML/SemanticDiff.pm die auf die SemanticDiff-internen Vergleiche verweisen: Code: (dl
)
$from_doc->{$element}->{NamespaceURI} eq $to_doc->{$element}->{NamespaceURI} Code: (dl
)
$from_doc->{$element}->{TextChecksum} eq $to_doc->{$element}->{TextChecksum} Bzlg. Problem 2 und 3 werde ich mich wohl mal an den Author wenden; aber was mache ich bloß falsch bzlg. Problem 1? Die Doku bzgl. XML::DOM (bzw. die spec vom DOM Class Interface) lassen mich eigentlich nur auf 'getData' schließen... TIA, Martin\n\n <!--EDIT|dukeofnukem|1174392042--> drum&bass is a state of mind
|