Xml Import
Zuletzt geändert: 14.03.2026 10:18

XML-Import und -Export (PowerShell) #

PowerShell-Beispiele für den XML-Import und -Export mit EULANDA. Die vollständige Objektreferenz finden Sie unter XMLLIB-Objekt.

Artikel aus XML-Datei importieren #

Liest eine XML-Datei vom Desktop und importiert die enthaltenen Artikel in EULANDA.

$App = New-Object -ComObject "Eulanda.Application"
$Cli = $App.Clients(0)
$Cli.Active = $true

$xmlEul = $Cli.CreateObject("XMLLIB")
$desktop = $Cli.Properties("FOLDER.DESKTOP")
$xmlEul.LoadFromFile("$desktop\ARTIKEL.XML")
$xmlEul.SaveToDB("SALESARTICLE")

[System.Runtime.InteropServices.Marshal]::ReleaseComObject($xmlEul) | Out-Null
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Cli) | Out-Null
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($App) | Out-Null

Artikel programmatisch erzeugen und importieren #

Erzeugt ein XML-Dokument im Speicher, fügt zwei Artikel hinzu und importiert sie in die Datenbank.

function Add-XmlElement {
    param(
        [System.Xml.XmlDocument]$XmlDoc,
        [System.Xml.XmlElement]$Parent,
        [string]$Name,
        [string]$Value
    )
    $element = $XmlDoc.CreateElement($Name)
    $element.InnerText = $Value
    $Parent.AppendChild($element) | Out-Null
}

$App = New-Object -ComObject "Eulanda.Application"
$Cli = $App.Clients(0)
$Cli.Active = $true

$xmlEul = $Cli.CreateObject("XMLLIB")

# XML-Dokument erstellen
$xmlDoc = New-Object System.Xml.XmlDocument
$declaration = $xmlDoc.CreateXmlDeclaration("1.0", "WINDOWS-1252", $null)
$xmlDoc.AppendChild($declaration) | Out-Null
$root = $xmlDoc.CreateElement("EULANDA")
$xmlDoc.AppendChild($root) | Out-Null

# Metadaten
$metadata = $xmlDoc.CreateElement("METADATA")
$root.AppendChild($metadata) | Out-Null
Add-XmlElement $xmlDoc $metadata "VERSION" "1.1"
Add-XmlElement $xmlDoc $metadata "GENERATOR" "PowerShell"
Add-XmlElement $xmlDoc $metadata "DATEFORMAT" "ISO8601"
Add-XmlElement $xmlDoc $metadata "FLOATFORMAT" "US"
Add-XmlElement $xmlDoc $metadata "FIELDNAMES" "NATIVE"
Add-XmlElement $xmlDoc $metadata "DATE" (Get-Date -Format "yyyy-MM-ddTHH:mm:ss")
Add-XmlElement $xmlDoc $metadata "PCNAME" $env:COMPUTERNAME
Add-XmlElement $xmlDoc $metadata "USERNAME" $env:USERNAME
Add-XmlElement $xmlDoc $metadata "DATABASEVERSION" "4.69"

# Artikelliste
$artikelListe = $xmlDoc.CreateElement("ARTIKELLISTE")
$root.AppendChild($artikelListe) | Out-Null

# Erster Artikel
$artikel = $xmlDoc.CreateElement("ARTIKEL")
$artikelListe.AppendChild($artikel) | Out-Null
Add-XmlElement $xmlDoc $artikel "ID.ALIAS" "4711"
Add-XmlElement $xmlDoc $artikel "ARTNUMMER" "4711"
Add-XmlElement $xmlDoc $artikel "KURZTEXT1" "Mein Kurztext zu 4711"
Add-XmlElement $xmlDoc $artikel "LANGTEXT" "Mein Langtext zu 4711"
Add-XmlElement $xmlDoc $artikel "VK" "47.23"

# Zweiter Artikel
$artikel = $xmlDoc.CreateElement("ARTIKEL")
$artikelListe.AppendChild($artikel) | Out-Null
Add-XmlElement $xmlDoc $artikel "ID.ALIAS" "0815"
Add-XmlElement $xmlDoc $artikel "ARTNUMMER" "0815"
Add-XmlElement $xmlDoc $artikel "KURZTEXT1" "Mein Kurztext zu 0815"
Add-XmlElement $xmlDoc $artikel "LANGTEXT" "Mein Langtext zu 0815"
Add-XmlElement $xmlDoc $artikel "VK" "66.65"

# Import ausführen
$xmlEul.LoadFromXml($xmlDoc.DocumentElement.OuterXml)
$xmlEul.SaveToDB("SALESARTICLE")

# Aufräumen
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($xmlEul) | Out-Null
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Cli) | Out-Null
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($App) | Out-Null

Hinweis: PowerShell bietet mit System.Xml.XmlDocument eine native XML-Unterstützung. Im Gegensatz zu VBScript und JScript, wo Microsoft.XMLDOM über COM erzeugt wird, kann hier direkt mit .NET-Klassen gearbeitet werden. Gleitkommawerte werden als String im US-Format angegeben (Punkt als Dezimaltrenner).