EulandaXtools — Funktionsreferenz
Wandelt CSV-Dateien anhand einer Mapping-JSON generisch in EULANDA-META-XML um.
ConvertFrom-CsvToEulandaMetaXml [-SourcePath] <string> [-OutputDirectory] <string> [-MappingPath]
<string> [[-Encoding] <string>] [-ValidateSchema] [[-SchemaPath] <string>] [[-DocumentType]
<string>] [<CommonParameters>]Liest eine CSV-Datei und erzeugt EULANDA-konformes XML über eine Mapping-JSON. Die Mapping-JSON ist der zentrale Baustein der Konvertierung: Sie beschreibt, wie CSV-Spalten und Konstanten in XML-Knoten und XML-Elemente überführt werden.
Nach dem Erzeugen wird die XML mit Get-SortedXmlString XSD-konform sortiert. Optional wird anschließend gegen ein XSD validiert.
-------------------------------------------------------------------------- Aufbau der Mapping-JSON --------------------------------------------------------------------------
1) Top-Level Eigenschaften
2) Tokens Tokens werden in Mappingdefinitionen über % genutzt:
3) Root-Block
Eigenschaften:
Kann Templates enthalten, z.B. "EULANDA".
Map: ZielElementName -> Definition
Schreibt Leaf-Elemente direkt unter Root.
Liste von NodeSpec-Objekten, die rekursiv erzeugt werden.
4) NodeSpec (Knoten-Definition) Ein NodeSpec beschreibt einen XML-Knoten und optional dessen Kinder.
Eigenschaften eines NodeSpec:
5) Listenmodus (ForEach="rows") Ein NodeSpec kann eine Liste erzeugen, indem ForEach auf "rows" gesetzt wird.
Zusätzliche Eigenschaften:
Hinweis: Wenn Counter.Target zusätzlich in Elements gemappt wäre, wird dieser Eintrag für das Item entfernt, um doppelte Ausgabe zu vermeiden.
6) Element-Definitionen (Values in Elements-Maps) Eine Definition kann ein String oder ein Object/Hashtable sein.
a) String-Definition
b) Object/Hashtable-Definition Unterstützte Keys:
-------------------------------------------------------------------------- Minimalbeispiel (Struktur) -------------------------------------------------------------------------- {
"DocumentType": "AUFTRAG",
"GroupByColumn": "Bestellnummer",
"OutputFileTemplate": "ORDER ({GroupKeySafe}).xml",
"SchemaPath": "schema/EULANDA-orders.xsd",
"Constants": { "EUR": "EUR", "Zero": "0.00" },
"Root": {
"Name": "EULANDA",
"Children": [
{ "Name": "METADATA", "Elements": { "DATE": { "Token": "%NOW:yyyy-MM-ddTHH:mm:ss" } } },
{ "Name": "{DocumentType}LISTE", "Children": [ { "Name": "{DocumentType}", "Children": [ ... ] } ] }
]
}
}
-------------------------------------------------------------------------- Benötigte Hilfsfunktionen im Scope --------------------------------------------------------------------------
-SourcePath
Type: stringPfad zur CSV-Quelldatei.
-OutputDirectory
Type: stringZielverzeichnis für die erzeugten XML-Dateien.
-MappingPath
Type: stringPfad zur Mapping-JSON.
-Encoding
Type: string
Default: 'UTF8'Zeichencodierung der CSV (UTF8 oder ANSI). Ausgabe ist immer UTF-8 ohne BOM.
-ValidateSchema
Type: switchWenn gesetzt, wird die XML gegen das XSD validiert.
-SchemaPath
Type: stringOptionaler Pfad zur XSD. Wenn nicht gesetzt, wird SchemaPath aus der JSON genutzt. Wenn JSON keinen SchemaPath hat, wird nicht validiert (auch wenn -ValidateSchema gesetzt ist -> Fehler).
-DocumentType
Type: stringOptionaler Override für DocumentType aus der JSON.
string[]Liste der erzeugten XML-Dateipfade.
# CSV nach EULANDA-META-XML über JSON-Mapping konvertieren
ConvertFrom-CsvToEulandaMetaXml `
-SourcePath '.\wulff.csv' `
-OutputDirectory '.\out' `
-MappingPath '.\WULFF.json'# CSV konvertieren und anschließend gegen XSD validieren
ConvertFrom-CsvToEulandaMetaXml `
-SourcePath '.\wulff.csv' `
-OutputDirectory '.\out' `
-MappingPath '.\WULFF.json' `
-ValidateSchema