ConvertFrom-CsvToEulandaMetaXml

EulandaXtools — Funktionsreferenz

ConvertFrom-CsvToEulandaMetaXml

ÜBERSICHT

Wandelt CSV-Dateien anhand einer Mapping-JSON generisch in EULANDA-META-XML um.

SYNTAX

ConvertFrom-CsvToEulandaMetaXml [-SourcePath] <string> [-OutputDirectory] <string> [-MappingPath]
    <string> [[-Encoding] <string>] [-ValidateSchema] [[-SchemaPath] <string>] [[-DocumentType]
    <string>] [<CommonParameters>]

BESCHREIBUNG

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 --------------------------------------------------------------------------

PARAMETER

-SourcePath

Type: string

Pfad zur CSV-Quelldatei.

-OutputDirectory

Type: string

Zielverzeichnis für die erzeugten XML-Dateien.

-MappingPath

Type: string

Pfad zur Mapping-JSON.

-Encoding

Type: string
Default: 'UTF8'

Zeichencodierung der CSV (UTF8 oder ANSI). Ausgabe ist immer UTF-8 ohne BOM.

-ValidateSchema

Type: switch

Wenn gesetzt, wird die XML gegen das XSD validiert.

-SchemaPath

Type: string

Optionaler 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: string

Optionaler Override für DocumentType aus der JSON.

AUSGABEN

string[]

Liste der erzeugten XML-Dateipfade.

BEISPIELE

# 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