New Edifact Parser
Zuletzt geändert: 14.03.2026 05:56

New-EdifactParser #

ÜBERSICHT #

Erzeugt ein EdifactParser-Objekt zur Verarbeitung, Analyse und Generierung von EDIFACT-Dokumenten.

SYNTAX #

New-EdifactParser [[-Data] <string>] [<CommonParameters>]

BESCHREIBUNG #

Die Funktion New-EdifactParser erstellt ein neues Objekt der Klasse EdifactParser. Dieses bietet umfangreiche Methoden, um EDIFACT-Nachrichten wie INVOIC, ORDERS, DESADV usw. strukturiert einzulesen, zu analysieren, zu verändern und bei Bedarf wieder auszugeben. Beim Einlesen wird die Nachricht in das EULANDA-META-XML-Format überführt. Umgekehrt kann beim Schreiben eine EDIFACT-Nachricht aus diesem Format generiert werden. Das EULANDA-META-XML dient dabei als neutrales Zwischensystem und lässt sich direkt in die EULANDA-SQL-Datenbank importieren oder daraus exportieren. Auf diese Weise können sämtliche Prüf- und Monitoring-Werkzeuge, die für EULANDA-META-XML vorhanden sind, auch für EDIFACT-Nachrichten genutzt werden. Zudem lässt sich dieses XML leicht in andere Formate transformieren, etwa eine EDIFACT-INVOIC-Nachricht in eine XRechnung. Die Parser-Logik basiert auf speziell erzeugten Syntaxdefinitionen aus offiziellen UN-ECE-Dokumenten. Dadurch kann gezielt auf verschiedene EDIFACT-Versionen und Subsets reagiert werden, inklusive nationaler oder branchenspezifischer Erweiterungen.

Das erzeugte Objekt bietet: #

  • Einlesen von EDIFACT-Daten aus Dateien oder Textstrings.
  • Dynamische Segmentbearbeitung (Hinzufügen, Löschen, Ändern).
  • Zugriff auf einzelne Felder und Komponenten mittels komfortabler Methoden.
  • Export der EDIFACT-Struktur als EULANDA-META-XML zur weiteren Verarbeitung.
  • Lesen und Speichern in unterschiedlichen Encodings und Formaten.

Standardmäßig verwendet das Objekt die EDIFACT-Syntax D96A, kann aber auch flexibel mit einer benutzerdefinierten Syntax initialisiert werden, um andere EDIFACT-Standards zu unterstützen.

Methoden #

  • LoadEdifact(string $edifactFilePath) Lädt und parst eine bestehende EDIFACT-Nachricht aus einer Datei zur internen Weiterverarbeitung.
  • SaveEdifact(string $outputFilePath) Speichert die aktuelle EDIFACT-Nachricht wieder in eine Datei, einschließlich aller Änderungen.
  • ParseSegments() Analysiert und zerlegt die geladene EDIFACT-Nachricht in einzelne Segmente und Felder zur Weiterverarbeitung.
  • GetFieldValue(int $segmentIndex, int $fieldIndex [, int $componentIndex]) Liest den Wert eines spezifischen Feldes (optional auch einer Komponente) im angegebenen Segment.
  • SetFieldValue(int $segmentIndex, int $fieldIndex, string $value [, int $componentIndex]) Setzt einen neuen Wert für ein spezifisches Feld oder eine Komponente innerhalb eines Segments.
  • MoveFirst() Setzt den Cursor auf das erste Segment der EDIFACT-Nachricht zurück.
  • MoveNext() Bewegt den Cursor zum nächsten Segment; liefert false bei Erreichen des Nachrichtenendes.
  • MovePrevious() Positioniert den Cursor auf das vorherige Segment, sofern vorhanden.
  • GetCurrentSegmentName() Gibt den Namen des aktuellen Segments zurück.
  • FindSegment(string $segmentName [, int $startPosition]) Sucht nach dem nächsten Segment mit dem angegebenen Namen, optional ab einer Startposition.
  • InsertSegment(int $position, string $segmentData) Fügt ein neues Segment an der angegebenen Position innerhalb der Nachricht ein.
  • DeleteSegment(int $segmentIndex) Entfernt ein Segment an der angegebenen Position aus der EDIFACT-Nachricht.
  • EscapeString(string $value) Kodiert Sonderzeichen im EDIFACT-Format entsprechend den Syntaxregeln.
  • UnescapeString(string $value) Dekodiert EDIFACT-spezifisch kodierte Sonderzeichen zur weiteren Verarbeitung.
  • ValidateMessage() Prüft die EDIFACT-Nachricht auf strukturelle und syntaktische Korrektheit anhand der EDIFACT-Definitionen.
  • GenerateXml() Wandelt die geladene EDIFACT-Nachricht vollständig in ein strukturiertes XML-Dokument um.

PARAMETER #

-Data #

Type: string
Default: ''

Optionaler Parameter zur Übergabe einer benutzerdefinierten Syntaxdefinition als mehrzeiliger String. Die Syntax definiert Struktur und Bedeutung der Segmente und ihrer Felder gemäß UN-ECE-Vorgaben.

Beispiel einer Syntaxdefinition: BGM+(C002)1001:1131:3055:1000+1004+1225+4343

Wird kein Parameter angegeben, nutzt das Objekt standardmäßig die integrierte EDIFACT D96A Syntax.

AUSGABEN #

EdifactParser

Das instanzierte Parser-Objekt für EDIFACT-Daten.

BEISPIELE #

# Erzeugt ein EdifactParser-Objekt mit Standard D96A-Syntax
$edi = New-EdifactParser
# Erzeugt ein EdifactParser-Objekt mit eigener Syntaxdefinition
$customSyntax = @'
BGM+(C002)1001:1131:3055:1000+1004+1225+4343
LIN+1082+(C212)7140:7143:1131:3055:7143
'@
$edi = New-EdifactParser -Data $customSyntax
# Lädt ein EDI File mit automatischer Zeichensatz-Erkennung
$edi.LoadFromFile('C:\Path\To\File.edi')
# Fügt ein neues Segment hinzu
$edi.AddSegment("BGM+380:9:6:12345+4711+2'")
# Verteilt einen langen String auf mehrdeutige Felder einer Komponente
$edi.SetComponentFields("C080", '3036', "EULANDA Software GmbH und Co KG für alle Internet GmbH",  $true)
# Exportiert die aktuelle EDIFACT-Struktur als formatierte XML
$xmlString = $edi.GetXmlString()
# Setzt ein einzelnes Feld in einem Segment
$edi.SetField('3207', "IT")
# Liest ein einzelnes Feld aus einem Segment
$edi.GetField('3207')
# Gezielter Zugriff auf das erste Feld einer mehrdeutigen Komponente
$edi.GetComponentField('C080', '1')
# Speichert das EDIFACT-Dokument als ANSI-Datei
$edi.SaveToFile("C:\Path\To\File.edi", "ANSI")
# Zeigt einen detaillierten Segment-Bericht mit Metainfos
$edi.GetSegmentReport()

HINWEISE #

Kompatibilität: PowerShell 5.1 und höher

Das Objekt unterstützt methodische Segmentnavigation, Field- und Component-Level-Manipulation sowie XML-Transformationen, was besonders bei komplexen Integrationsszenarien hilfreich ist.