Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

SEPA-XML in CSV zerlegen

$
0
0

Hallo zusammen,

in Sachen Powershell stehe ich leider noch am Anfang und mir fehlen Erfahrungen. Ich habe folgende Thematik, an der ich nicht so recht weiter komme und bitte deshalb um den einen oder anderen Hinweis.

Ausgangspunkt ist ein XML nach urn:iso:std:iso:20022:tech:xsd:pain.008.001.02 pain.008.001.02.xsd. Das XML enthält die nicht zusammengefassten Lastschriftsdaten aus Starmoney Business. Daraus werden Daten benötigt. Mit dem folgenden Code habe ich mir die Daten bereits in Variablen geholt:

$XMLRootPath = 'c:\temp\xml\'
$XMLFiles = Get-ChildItem -Path  $XMLRootPath -Filter '*.xml' -File | Select-Object -ExpandProperty FullName

Foreach($XMLFile in $XMLFiles){
    [XML]$xml = Get-Content $XMLFile

    $Node1 = $xml.Document.CstmrDrctDbtInitn.PmtInf | Select-Object -ExpandProperty DrctDbtTxInf
    $Value = $xml.Document.CstmrDrctDbtInitn.PmtInf.DrctDbtTxInf.InstdAmt
    $Node2 = $xml.Document.CstmrDrctDbtInitn.PmtInf.DrctDbtTxInf | Select-Object -ExpandProperty DrctDbtTx
    $InvNoDate = $xml.Document.CstmrDrctDbtInitn.PmtInf.DrctDbtTxInf.DrctDbtTx | Select-Object -ExpandProperty MndtRltdInf
    $Node3 = $xml.Document.CstmrDrctDbtInitn.PmtInf.DrctDbtTxInf.DrctDbtTx | Select-Object -ExpandProperty CdtrSchmeId
    $Node4 = $xml.Document.CstmrDrctDbtInitn.PmtInf.DrctDbtTxInf.DrctDbtTx.CdtrSchmeId | Select-Object -ExpandProperty Id
    $Node5 = $xml.Document.CstmrDrctDbtInitn.PmtInf.DrctDbtTxInf.DrctDbtTx.CdtrSchmeId.Id | Select-Object -ExpandProperty PrvtId
    $Mandat = $xml.Document.CstmrDrctDbtInitn.PmtInf.DrctDbtTxInf.DrctDbtTx.CdtrSchmeId.Id.PrvtId | Select-Object -ExpandProperty Othr
    $Client = $xml.Document.CstmrDrctDbtInitn.PmtInf.DrctDbtTxInf | Select-Object -ExpandProperty Dbtr
    $Node7 = $xml.Document.CstmrDrctDbtInitn.PmtInf.DrctDbtTxInf | Select-Object -ExpandProperty DbtrAcct
    $IBAN = $xml.Document.CstmrDrctDbtInitn.PmtInf.DrctDbtTxInf.DbtrAcct | Select-Object -ExpandProperty Id
    $Note = $xml.Document.CstmrDrctDbtInitn.PmtInf.DrctDbtTxInf | Select-Object -ExpandProperty RmtInf

Nach Ausführung des Codes habe ich in den Variablen alle Werte inklusive Überschriften stehen. Dies sieht am Beispiel einer Variable so aus:

MndtId  DtofSgntr
------  ---------
SR12345 2018-12-30
SR12346 2018-12-30
SR12347 2018-12-30

An dieser Stelle stecke ich fest.

Gedanklich würde ich diese Werte in eine Tabelle (Array?) schreiben, denn jede Variable enthält neben Überschrift und Unterstrich die gleiche Anzahl von Werten. Die Tabelle dann am Ende als CSV speichern.

Nur da fehlt mir die rechte Idee, wie die letzten beiden Schritte zu bewerkstelligen sind. Vielleicht gibt es für das Auslesen des XMLs noch einen besseren / einfacheren Weg? Deshalb hier einmal ein Beispiel-XML:

<?xml version="1.0" encoding="UTF-8"?><Document xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02 pain.008.001.02.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02"><CstmrDrctDbtInitn><GrpHdr><MsgId>3be02bfd5-4771562-11113951-20190116</MsgId><CreDtTm>2019-01-16T11:11:39Z</CreDtTm><NbOfTxs>3</NbOfTxs><CtrlSum>1405.33</CtrlSum><InitgPty><Nm>M R und N</Nm></InitgPty></GrpHdr><PmtInf><PmtInfId>3be02bfd5-4771562-11113951-20190116</PmtInfId><PmtMtd>DD</PmtMtd><BtchBookg>true</BtchBookg><NbOfTxs>3</NbOfTxs><CtrlSum>1405.33</CtrlSum><PmtTpInf><SvcLvl><Cd>SEPA</Cd></SvcLvl><LclInstrm><Cd>CORE</Cd></LclInstrm><SeqTp>OOFF</SeqTp></PmtTpInf><ReqdColltnDt>2019-01-16</ReqdColltnDt><Cdtr><Nm>M R und N</Nm></Cdtr><CdtrAcct><Id><IBAN>DE22860700240399999999</IBAN></Id></CdtrAcct><CdtrAgt><FinInstnId><BIC>DEUTDEDBLEG</BIC></FinInstnId></CdtrAgt><ChrgBr>SLEV</ChrgBr><DrctDbtTxInf><PmtId><EndToEndId>NOTPROVIDED</EndToEndId></PmtId><InstdAmt Ccy="EUR">170.51</InstdAmt><DrctDbtTx><MndtRltdInf><MndtId>SR23234</MndtId><DtOfSgntr>2013-12-08</DtOfSgntr></MndtRltdInf><CdtrSchmeId><Id><PrvtId><Othr><Id>DE7999999999999999</Id><SchmeNm><Prtry>SEPA</Prtry></SchmeNm></Othr></PrvtId></Id></CdtrSchmeId></DrctDbtTx><DbtrAgt><FinInstnId><BIC>GENODEF1LVB</BIC></FinInstnId></DbtrAgt><Dbtr><Nm>Kunde1</Nm></Dbtr><DbtrAcct><Id><IBAN>DE75999999999999999999</IBAN></Id></DbtrAcct><RmtInf><Ustrd>Re.Nr. SR23234 vom 06.11.2013 Deb. 439</Ustrd></RmtInf></DrctDbtTxInf><DrctDbtTxInf><PmtId><EndToEndId>NOTPROVIDED</EndToEndId></PmtId><InstdAmt Ccy="EUR">353.36</InstdAmt><DrctDbtTx><MndtRltdInf><MndtId>SRW23249</MndtId><DtOfSgntr>2013-12-08</DtOfSgntr></MndtRltdInf><CdtrSchmeId><Id><PrvtId><Othr><Id>DE7999999999999996</Id><SchmeNm><Prtry>SEPA</Prtry></SchmeNm></Othr></PrvtId></Id></CdtrSchmeId></DrctDbtTx><DbtrAgt><FinInstnId><BIC>WELADE8LXXX</BIC></FinInstnId></DbtrAgt><Dbtr><Nm>Kunde2</Nm></Dbtr><DbtrAcct><Id><IBAN>DE10999999999999999999</IBAN></Id></DbtrAcct><RmtInf><Ustrd>Re.Nr. SRW23249 v. 06.11.2013 Deb. 634 abzgl. EUR 10,93 Skonto</Ustrd></RmtInf></DrctDbtTxInf></PmtInf></CstmrDrctDbtInitn></Document>

Besten Dank für Eure Unterstützung!

Marco


Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>