Thread XML::Parser::EasyTree xml schreiben (8 answers)
Opened by Allaman at 2011-08-10 21:09

pq
 2011-08-11 17:45
#151521 #151521
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
hat man libxml erstmal gelernt, ist es wirklich sehr praktisch, auch der zugriff via XPath.
bei EasyTree (welches anscheinend über 10 jahre alt ist) musst du dir die methode selber schreiben oder jemand schreibt sie dir.
in der datenstruktur findest du, soweit ich sehe, alle informationen, die du für die gernerierung des XML brauchst.
ich würde wahrscheinlich einen rekursiven ansatz wählen, also in etwa
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sub to_string {
    my ($node, $level) = @_;
    my $xml = '';
    my $indent = ' ' x $level;
    if ($node->{type} eq 't') { $xml .= $node->{name} }
    elsif ($node->{type} eq 'e') {
        $xml .= "$indent<$node->{name}>\n";
        for my $child (@{ $node->{content} || [] }) {
            $xml = to_string($child, $level + 1);
        }
        $xml .= "$indent</$node->{name}>\n";
    }
}

my $xml;
$xml .= to_string($_) for @$easytree;


achtung, ungestestet! ausserdem fehlen behandlung von sonderzeichen, also wenn im text z.b. < oder > vorkommt. ich weiss auch nicht, was EasyTree in dem fall liefert.

die attribute müsstest du natürlich auch noch behandeln.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread XML::Parser::EasyTree xml schreiben