NAME
Quiq::Zugferd::Tree - Operatonen auf ZUGFeRD-Baum
BASE CLASS
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
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
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.