Get-SortedXmlString #
ÜBERSICHT #
Sortiert eine EULANDA-XML-Struktur logisch und gibt sie formatiert als String zurück.
SYNTAX #
Get-SortedXmlString [[-XmlString] <string>] [[-DocumentType] <string>] [-RemoveComments]
[<CommonParameters>]
BESCHREIBUNG #
Diese Funktion nimmt einen XML-String mit einer EULANDA-konformen Struktur entgegen, analysiert die enthaltenen Elemente rekursiv und sortiert sie in einer logisch definierten Reihenfolge. Dabei werden u.a. folgende Regeln beachtet:
- Innerhalb von
: METADATA, FIRMENSTAMM, weitere Knoten alphabetisch, dann die *LISTE. - Innerhalb von *LISTE: Sortierung der POS-Elemente nach POSNUMMER.
- In BANKLISTE und STEUERLISTE: numerische Sortierung nach ID bzw. MWSTSATZ.
- Innerhalb von Elementen: Leaf-Nodes vor Non-Leaf-Nodes, sortiert nach Name.
Die Ausgabe ist ein formatiertes XML (UTF-8 ohne BOM), ideal für Datei-Export oder Anzeige.
PARAMETER #
-XmlString #
Type: string
Ein gültiger XML-String mit EULANDA-Datenstruktur.
-DocumentType #
Type: string
Der DocumentType (RECHNUNG, AUFTRAG, LIEFERSCHEIN, ANGEBOT usw.), der zur Steuerung der POS-Logik benötigt wird.
-RemoveComments #
Type: switch
Wenn gesetzt, werden alle XML-Kommentare aus der Ausgabe entfernt.
AUSGABEN #
string
Ein formatierter und logisch sortierter XML-String (UTF-8 ohne BOM).
BEISPIELE #
# Liest eine EULANDA-XML-Datei ein und speichert die Knoten sortiert zurück.
$XmlString = Get-Content -Raw -Path "auftrag.xml"
$sorted = Get-SortedXmlString -XmlString $XmlString -DocumentType "AUFTRAG"
[System.IO.File]::WriteAllText("auftrag-sorted.xml", $sorted, [System.Text.UTF8Encoding]::new($false))
HINWEISE #
- Die Funktion verändert die Reihenfolge ursprüngliche Struktur z.B. bei POS- oder LISTE-Knoten.
- Die Ausgabe entspricht der in den betreffenden XSD-Dateien enthaltenen Reihenfolgen.
To-Do:
- Kommentare nach Sortierung vor die umsortierten Felder stellen (falls diese rechts daneben standen)
- Kommentare vor Oberelementen belassen und ggf. mit verschieben
- Option zum Entfernen aller Kommentare
- Option zum Einfügen von Kommentaren anhand einer XSD
- Zusatzparameter Anstatt XmlString auch XmlPath und Xml als Struktur erlauben
- Optional neben XmlString Ausgabe auch XmlOutPath und XmlStruktur erlauben