Thread XML::DOM / XML::Semanticdiff: why oh why don't they DWIM (12 answers)
Opened by dukeofnukem at 2007-03-20 13:58

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

View full thread XML::DOM / XML::Semanticdiff: why oh why don't they DWIM