NAME

Quiq::Zugferd::Tree - Operatonen auf ZUGFeRD-Baum

BASE CLASS

Quiq::Hash

DESCRIPTION

Ein ZUGFeRD-Baum ist die Repräsentation von ZUGFeRD-XML in Form einer Perl-Datenstruktur. Diese Repräsentation wird genutzt, um die XML-Struktur geeignet bearbeiten zu können.

METHODS

Klassenmethoden

new() - Konstruktor

Synopsis

$ztr = $class->new($ref);

Description

Instantiiere einen ZUGFeRD-Baum und liefere eine Referenz auf dieses Objekt zurück.

Objektmethoden

getSubTree() - Liefere Mehrfach-Element

Synopsis

$ztr = $ztr->getSubTree($keyPath,$placeholder)

Arguments

$keyPath

Pfad zu Array

$placeholder

Name des Platzhalters

Description

Liefere die Struktur, die das erste Element des Arrays iat, das $keyPath referenziert, und ersetze die Referenz durch den Platzhalter $placeholder.

processSubTree() - Verarbeite Subbaum

Synopsis

$treeA = $ztr->processSubTree($path,$placeholder,\@arr,sub {
    my ($ztr,$h,$i) = @_;
    ...
    $t->resolvePlaceholders(
        @keyVal
    );

    return $t;
});

Arguments

$path

Pfad zum Subbaum

$placeholder

Platzhalter, der in den Baum $ztr unter dem Pfad $path eingesetzt wird.

@arr

Liste der Elemente, aus denen die Platzhalter im Subbaum ersetzt werden.

sub {}

Subroutine, die die Einsetzung in einen Subbaum vornimmt

Returns

(Object) (Sub-)Baum mit ersetzen Platzhaltern

Description

Ersetze im Subbaum $name die Platzhalter aus den Elementen von @arr.

reduceTree() - Reduziere den Baum

Synopsis

$ztr->reduceTree;
$ztr->reduceTree($sub);

Arguments

$sub

Referenz auf Subroutine, die unaufgelöste Werte entfernt. Default:

sub {
    my $val = shift;
    if (defined $val && $val =~ /^__\w+__$/) {
        $val = undef;
    }
    return $val;
}

Description

Reduziere den ZUGFeRD-Baum auf ein Minumum, d.h.

  • Entferne alle Knoten mit unaufgelösten Werten

  • Entferne alle leeren Knoten

resolvePlaceholders() - Ersetze Platzhalter

Synopsis

$ztr->resolvePlaceholders(@keyVal,%options);

Arguments

@keyVal

Liste der Platzhalter und ihrer Werte

Options

-label => $text (Default: '')

Versieh den Abschnitt der Platzhalter (bei -showPlaceHolders=>1) mit der Beschriftung $label.

-showPlaceholders => $bool (Default: 0)

Gibt die Liste der Platzhalter auf STDOUT aus

Description

Durchlaufe den ZUGFeRD-Baum rekursiv und ersetze auf den Blattknoten die Keys durch ihre Werte. Blattknoten-Werte, die unter den Keys nicht vorkommen, werden auf undef gesetzt (und ggf. später durch reduceTree() entfernt).

Fehlt einer der Platzhalter (key) im Baum oder kommen Platzhalter mehrfach vor, wird eine Exception geworfen.

VERSION

1.230

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2025 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.