PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Powershell Spezialisten hier? XML auslesen mit Loop?


user77
2015-05-04, 20:56:42
Hallo

ich habe eine XML, da lese ich mit einem Script Daten aus und exportiere sie in ein TXT File (zum Import in ein Buchhaltungsprogramm)

Habe ich ein Aufwandskonto (Export_RE-0001.xml) in der XML funktioniert das ganze ja bereits super, bei mehreren (Export_RE-0002.xml) muss ich aber eine loop einbauen, die mir die Konten nach und nach abfragt. Leider bin ich absoluter Programmiernoob.



So mach es das Script bei einem AW Konto (Export_RE-0001.xml):

Lieferant;RE_Nummer;RE_Datum;RE_Betrag;AW_Konto_Konto;AW_Konto_Betrag;AW_Konto_M wst;
Lieferant_1;RE-0001;29.04.2015;500,00;5000;500,00;20;



So mach es das Script bei mehreren AW Konten (Export_RE-0002.xml):

Lieferant;RE_Nummer;RE_Datum;RE_Betrag;AW_Konto_Konto;AW_Konto_Betrag;AW_Konto_M wst;
Lieferant_2;RE-0002;30.04.2015;1000,00;System.Object[];System.Object[];System.Object[];


Aussehen soll es aber so:

Lieferant;RE_Nummer;RE_Datum;RE_Betrag;AW_Konto_Konto;AW_Konto_Betrag;AW_Konto_M wst;
Lieferant_2;RE-0002;30.04.2015;1000,00;7000;250;20;
Lieferant_2;RE-0002;30.04.2015;1000,00;7100;250;20;
Lieferant_2;RE-0002;30.04.2015;1000,00;7200;250;20;
Lieferant_2;RE-0002;30.04.2015;1000,00;7300;250;20;


Also wenn er beim Auslesen auf "AW_Konto_Nummer" kommt, soll er eine neue Zeile mit den Werten schreiben.

Kann mir da jemand weiterhelfen oder einen Tipp geben. Habe schon Stunden in Internet gesucht, aber komme nicht weiter.
XML und Script im Anhang (.txt entfernen)?

robobimbo
2015-05-04, 22:45:50
Viel hat dir nicht gefehlt, du muss Dir aus dem XML die einzelnen Tabellen holen, die durch eine Schleife jagen und in jeder Schleifeniteration deine Informationen in die Datei ausgeben.

$base_dir = "E:\Development\powershell";
$import_dir = "$base_dir\import";
$export_dir = "$base_dir\export";


$files = Get-ChildItem -Path $import_dir -Filter *xml
$files | ForEach-Object {
[xml]$doc = get-content $_.FullName

$OutputPath = "$export_dir\txt\$RE_Nummer.txt"

$Dateipfad = $doc.TheWFExport.TheDocFiles.TheDocFile
$Lieferant = $doc.TheWFExport.TheIxData.Lieferant


$RE_Nummer=$doc.TheWFExport.TheIxData.RE_Nummer
$RE_Datum=$doc.TheWFExport.TheIxData.RE_Datum
$RE_Betrag=$doc.TheWFExport.TheIxData.RE_Betrag

foreach($zeile in $doc.TheWFExport.TheIxData.AW_Konten.AW_Konten_Tabelle) {
$RE_AW_Konten_Nummer=$zeile.AW_Konten_Nummer
$RE_AW_Konten_Konto= $zeile.AW_Konten_Konto
$RE_AW_Konten_Betrag=$zeile.AW_Konten_Betrag
$RE_AW_Konten_Mwst=$zeile.AW_Konten_Mwst

$Lieferant,$RE_Nummer,$RE_Datum,$RE_Betrag,$RE_AW_Konten_Konto,$RE_AW_Konten_Bet rag,$RE_AW_Konten_Mwst,'' -join ';' | Out-File -FilePath $OutputPath -Append -Width 200;
}

# $Ziel = "C:\Export\Verarbeitet"
#move $Dateipfad $Ziel -force
#del $_.FullName
}

user77
2015-05-05, 08:25:07
Guten Morgen, vielen danke für die Hilfe!

genau das war es, habe schon viele probiert, kam aber nicht auf das: foreach($zeile in $doc.TheWFExport.TheIxData.AW_Konten.AW_Konten_Tabelle)

Wie immer klasse Support im Forum!!!