Schrift
[thread]8853[/thread]

XML::DOM / XML::Semanticdiff: why oh why don't they DWIM (Seite 2)

Leser: 2


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
ptk
 2007-03-22 21:18
#75164 #75164
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Eine weitere Möglichkeit: du nimmst eine ältere XML::LibXML2-Version, die noch mit den alten libxml2-Bibliotheken funktioniert.
dukeofnukem
 2007-03-23 12:40
#75165 #75165
User since
2007-01-15
47 Artikel
BenutzerIn
[default_avatar]
libxml2
auf Solaris: 2.4.23
auf Linux: 2.6.7

Würde eher ungern zu Hammer und Meißel zurückkehren wenn mir einer ne Hilti unter die Nase hält :cool:
Insbesondere "Versions prior to 2.6.8 are known to be broken for various reasons, versions" läßt mich vermuten daß sich da einiges aus gutem Grund geändert hat...

aus der README von XML::LibXML-1.62:

IMPORTANT NOTES
===============

XML::LibXML was almost entirely reimplemented between version 1.40 to version
1.49. This may cause problems on some production machines. With version 1.50 a
lot of compatibility fixes were applied, so programs written for XML::LibXML
1.40 or less should run with version 1.50 again.

In 1.59, a new callback API was introduced. This new API is not compatible with
the previous one. See XML::LibXML::InputCallback manual page for details.

In 1.61 the XML::LibXML::XPathContext module, previously distributed
separately, was merged in.
[...]
As of XML::LibXML 1.61, only versions 2.6.16 and higher are supported.
XML::LibXML will probably not compile with earlier libxml2 versions than 2.5.6.
Versions prior to 2.6.8 are known to be broken for various reasons, versions
prior to 2.1.16 exhibit problems with namespaced attributes and do not
therefore pass XML::LibXML regression tests.
drum&bass is a state of mind
dukeofnukem
 2007-04-03 17:49
#75166 #75166
User since
2007-01-15
47 Artikel
BenutzerIn
[default_avatar]
FYI: Es fehlte lediglich ein '->getFirstChild', das offenbar nötig ist um hierarchisch an den Content zu gelangen.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env perl

use strict;
use warnings;
use XML::DOM;
use XML::DOM::XPath;
use XML::SemanticDiff;

my ($file1, $file2) = @ARGV;

my $doc1 = do { local(*ARGV, $/, $_); @ARGV = $file1; <>; };
my $doc2 = do { local(*ARGV, $/, $_); @ARGV = $file2; <>; };

my $differ = XML::SemanticDiff->new(keepdata => 1,);
my @deltas = $differ->compare( $doc1, $doc2 );

my $majorDOMus = XML::DOM::Parser->new();
my ($tree1, $tree2) = map { $majorDOMus->parse($_); } $doc1, $doc2;

for my $delta (@deltas) {
my $path = $delta->{'context'};
my @nodes;

( push @nodes, $tree1->findnodes($path) ) ?
1 :
( push @nodes, $tree2->findnodes($path) ) ?
1 :
print "\nThere is no node at '$path'\n";

if (@nodes) {
print "\nNODEVALUE(getNodeValue): ", $_->getFirstChild->getNodeValue for @nodes;
print "\nNODEVALUE(getData): ", $_->getFirstChild->XML::DOM::CharacterData::getData for @nodes;
print "\nTOSTRING: ", $_->toString for @nodes;

}
}


Hab ich das jetzt richtig verstanden: getFirstChild zeigt dann quasi auf die anonyme ChildNode, die weder Namen noch sonstwas hat, sondern nur ein Value?

Sonnigen!
drum&bass is a state of mind
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2007-03-20 13:58.