XML-Datei, Knoten an einer bestimmten Stelle automatisch hinfügen
Hallo zusammen,
ich stehe vor dem Problem einen Konten automatisch in einer XML-Datei hizuzufügen. Dafür müsste sicher ein Script geschrieben werden. Nun weiß ich nicht wie das am besten realisiert werden kann. Hat vielleicht jemand eine Idee oder eine Script-Vorlage?
In die Datei müsste dieser Knoten <InstrForDbtrAgt>/CONFIDENTIAL/Y</InstrForDbtrAgt> , an dieser Stelle eingefügt werden:
<CdtrAcct>
<Id>
<IBAN>DE99999999999999999999</IBAN>
</Id>
</CdtrAcct>
<InstrForDbtrAgt>/CONFIDENTIAL/Y</InstrForDbtrAgt>
<Purp>
<cd>SALA</cd>
Dei Datei kann aus der Hauptanwendung nicht anders ausgegebene werden.
Gesamte Datei:
ich stehe vor dem Problem einen Konten automatisch in einer XML-Datei hizuzufügen. Dafür müsste sicher ein Script geschrieben werden. Nun weiß ich nicht wie das am besten realisiert werden kann. Hat vielleicht jemand eine Idee oder eine Script-Vorlage?
In die Datei müsste dieser Knoten <InstrForDbtrAgt>/CONFIDENTIAL/Y</InstrForDbtrAgt> , an dieser Stelle eingefügt werden:
<CdtrAcct>
<Id>
<IBAN>DE99999999999999999999</IBAN>
</Id>
</CdtrAcct>
<InstrForDbtrAgt>/CONFIDENTIAL/Y</InstrForDbtrAgt>
<Purp>
<cd>SALA</cd>
Dei Datei kann aus der Hauptanwendung nicht anders ausgegebene werden.
Gesamte Datei:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>1111111333</MsgId>
<CreDtTm>2017-09-11T13:15:24.000+02:00</CreDtTm>
<NbOfTxs>2</NbOfTxs>
<CtrlSum>198.00</CtrlSum>
<InitgPty>
<Nm>TEST GMBH</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>1111111333</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<BtchBookg>true</BtchBookg>
<NbOfTxs>2</NbOfTxs>
<CtrlSum>198.00</CtrlSum>
<PmtTpInf>
<SvcLvl>
<cd>SEPA</cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>2017-09-12</ReqdExctnDt>
<Dbtr>
<Nm>TEST GMBH</Nm>
<PstlAdr>
<Ctry>DE</Ctry>
<AdrLine>Musterstrasse</AdrLine>
<AdrLine>99999 Stadt</AdrLine>
</PstlAdr>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>DE99999999999999999999</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>BANK000000</BIC>
</FinInstnId>
</DbtrAgt>
<ChrgBr>SLEV</ChrgBr>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>1111111333-0000001</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">99.00</InstdAmt>
</Amt>
<Cdtr>
<Nm>Mustermann</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE99999999999999999999</IBAN>
</Id>
</CdtrAcct>
<Purp>
<cd>SALA</cd>
</Purp>
<RmtInf>
<Ustrd>Testzahlung 09/2017</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>1111111333-0000002</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">99.00</InstdAmt>
</Amt>
<Cdtr>
<Nm>Musterfrau</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE00000000000000000000</IBAN>
</Id>
</CdtrAcct>
<Purp>
<cd>SALA</cd>
</Purp>
<RmtInf>
<Ustrd>Testzahlung 09/2017</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 351418
Url: https://administrator.de/forum/xml-datei-knoten-an-einer-bestimmten-stelle-automatisch-hinfuegen-351418.html
Ausgedruckt am: 04.05.2025 um 08:05 Uhr
5 Kommentare
Neuester Kommentar
Servus Joerg,
wenn's Powershell sein darf:
Grüße Uwe
p.s. Bitte in Zukunft nutze Code-Tags für deinen Quellcode:
wenn's Powershell sein darf:
$xmlpath = 'C:\datei.xml'
$xml = [xml](gc $xmlpath)
[System.Xml.XmlNamespaceManager]$ns = new-Object System.Xml.XmlNamespaceManager $xml.NameTable
$ns.AddNamespace("ns",$xml.DocumentElement.NamespaceURI)
$node = $xml.CreateElement("InstrForDbtrAgt",$xml.DocumentElement.NamespaceURI)
$node.InnerText = "/CONFIDENTIAL/Y"
#$new = $xml.Document.CstmrCdtTrfInitn.PmtInf.CdtTrfTxInf.appendChild($node)
$xml.SelectNodes('/ns:Document/ns:CstmrCdtTrfInitn/ns:PmtInf/ns:CdtTrfTxInf/ns:CdtrAcct',$ns) | %{
$_.parentNode.InsertAfter($node.Clone(),$_)
}
$xml.Save($xmlpath)
Grüße Uwe
p.s. Bitte in Zukunft nutze Code-Tags für deinen Quellcode:
<code> Quellcode </code>
. Merci.
Ausnahmsweise 
strPath = "C:\datei.xml"
Set xmldoc = CreateObject("msxml2.domdocument")
xmldoc.Async = False
xmldoc.load(strPath)
xmldoc.setProperty "SelectionLanguage", "XPath"
xmldoc.setProperty "SelectionNamespaces","xmlns:ns='urn:iso:std:iso:20022:tech:xsd:pain.001.001.03'"
Set node = xmldoc.createNode (1,"InstrForDbtrAgt","urn:iso:std:iso:20022:tech:xsd:pain.001.001.03")
node.text = "/CONFIDENTIAL/Y"
Set nodes = xmldoc.selectNodes("/ns:Document/ns:CstmrCdtTrfInitn/ns:PmtInf/ns:CdtTrfTxInf/ns:Purp")
For Each n In nodes
n.parentNode.insertBefore node.cloneNode(True),n
Next
xmldoc.save strPath
Zitat von @joergsworld:
Vielen Dank! Mit der Testdatei hat alles geklappt. Mit der echten kompletten Datei kämpfe ich noch.
Falls du letzten Endes doch nicht klar kommen solltest, melde dich einfach nochmal.Vielen Dank! Mit der Testdatei hat alles geklappt. Mit der echten kompletten Datei kämpfe ich noch.
Grüße Uwe