Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Inhalt bzw. Zeilen in XML File mit Script hinzufügen

Mitglied: riatnep

riatnep (Level 1) - Jetzt verbinden

07.10.2013, aktualisiert 11:16 Uhr, 2427 Aufrufe, 4 Kommentare

Hallo zusammen,

ich habe schon ziemlich viel Zeit in diese Anforderung gesteckt, jedoch komme ich selbst nicht zur richtigen Lösung.
Wie kann ich in einer XML einige Zeilen zusätzlich per Script hinzufügen? Und in Zeile 5 <Msgid> sollen die "/" beim Datum entfernt werden.

Soll:
01.
<?xml version="1.0" encoding="utf-8" ?>
02.
<Document>
03.
<CstmrCdtTrfInitn>
04.
<GrpHdr>
05.
<MsgId>20130619001</MsgId> 
06.
<CreDtTm>2013-06-19T14:22:08</CreDtTm> 
07.
<NbOfTxs>1</NbOfTxs> 
08.
<CtrlSum>100.00</CtrlSum> 
09.
<InitgPty>
10.
<Nm>Company Name</Nm> 
11.
<Id>
12.
<OrgId>
13.
<Othr>
14.
<Id>123456789</Id> 
15.
</Othr>
16.
</OrgId>
17.
</Id>
18.
</InitgPty>
19.
</GrpHdr>
20.
</CstmrCdtTrfInitn>
21.
</Document>
22.
Ist:
01.
<?xml version="1.0" encoding="utf-8" ?>
02.
<Document>
03.
<CstmrCdtTrfInitn>
04.
<GrpHdr>
05.
<MsgId>2013/06/19001</MsgId> 
06.
<CreDtTm>2013-06-19T14:22:08</CreDtTm> 
07.
<NbOfTxs>1</NbOfTxs> 
08.
<CtrlSum>100.00</CtrlSum> 
09.
<InitgPty>
10.
<Nm>Company Name</Nm> 
11.
</InitgPty>
12.
</GrpHdr>
13.
</CstmrCdtTrfInitn>
14.
</Document>
Sprich die Zeilen von 11 bis 17 sollen immer nach <Nm Company Name </Nm> hinzugefügt werden. Diese hinzugefügten Zeilen sind fix und müssen nicht angepasst werden.
Die Datei mit dem neuen Inhalt soll als neue Datei im gleichen Verzeichnis mit anderem Namen abgelegt werden.

Ich habe versucht mich an diesen Beitrag zu halten:
https://www.administrator.de/forum/inhalt-einer-xml-datei-per-batch-bzw- ...

Wäre super wenn Ihr Eure Ideen mit einbirngen könntet.

Viele Grüße
Steffen
Mitglied: colinardo
07.10.2013, aktualisiert um 12:52 Uhr
Hallo Steffen,
probiers mal hiermit: (in Zeile 1 und 2 jeweils noch die Pfade anpassen)
01.
strXMLINPUT = "c:\input.xml"
02.
strXMLOUTPUT = "c:\output.xml"
03.
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
04.
xmlDoc.Load strXMLINPUT
05.

06.
'korrigiere MsgId
07.
Set nodeDatum = xmlDoc.selectSingleNode("/Document/CstmrCdtTrfInitn/GrpHdr/MsgId")
08.
nodeDatum.firstChild.nodeValue= Replace(nodeDatum.firstChild.nodeValue,"/","")
09.

10.
'hole Referenz zum Einfüge-Element in das die neuen Elemente eingefügt werden
11.
Set insertNode = xmlDoc.selectSingleNode("/Document/CstmrCdtTrfInitn/GrpHdr/InitgPty")
12.

13.
'erzeuge Elemente
14.
Set node_Id = xmlDoc.createElement("Id")
15.
Set node_OrgId = xmlDoc.createElement("OrgId")
16.
Set node_Othr = xmlDoc.createElement("Othr")
17.
Set node_Othr_Id = xmlDoc.createElement("Id")
18.
Set node_Othr_Id_Text = xmldoc.createTextNode("123456789")
19.

20.
'hänge die Elemente aneinander 
21.
node_Othr_Id.appendChild(node_Othr_Id_Text)
22.
node_Othr.appendChild(node_Othr_Id)
23.
node_OrgId.appendChild(node_Othr)
24.
node_Id.appendChild(node_OrgId)
25.
insertNode.appendChild(node_Id)
26.

27.
' Stylesheet: XML Dokument schön formatieren
28.
Set oXsltDoc = CreateObject("Msxml2.DOMDocument.6.0")
29.
oXsltDoc.async = False
30.
oXsltDoc.loadXML( _
31.
  "<?xml version=""1.0"" encoding=""windows-1252""?>" & vbNewLine & _
32.
  "<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"">" & vbNewLine & _
33.
  "	<xsl:output method=""xml"" version=""1.0"" encoding=""UTF-8"" indent=""yes"" />" & vbNewLine & _
34.
  "	<xsl:template match=""node()|@*"">" & vbNewLine & _
35.
  "		<xsl:copy>" & vbNewLine & _
36.
  "			<xsl:apply-templates select=""node()|@*"" />" & vbNewLine & _
37.
  "		</xsl:copy>" & vbNewLine & _
38.
  "	</xsl:template>" & vbNewLine & _
39.
  "</xsl:stylesheet>")
40.
xmlDoc.transformNodeToObject oXsltDoc, xmlDoc
41.

42.
'speichere XML als neues Dokument
43.
xmlDoc.save(strXMLOUTPUT)
44.

45.
Set xmlDoc = Nothing
46.
Set oXsltDoc = Nothing
Grüße Uwe
Bitte warten ..
Mitglied: riatnep
07.10.2013 um 16:13 Uhr
Hallo Uwe,

vielen Dank. Dein Script funktioniert wunderbar.

Leider habe ich bei meinem oberen Post die XML ein bisschen gekürzt.

Der Kopf der XML ist im Original nicht

01.
<?xml version="1.0" encoding="utf-8" ?>
02.
<Document>
sondern
01.
<?xml version="1.0" encoding="utf-8"?>
02.
<!-- Created with Liquid XML Studio - FREE Community Edition 7.1.6.1440 (http://www.liquid-technologies.com) -->
03.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.002.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.002.03 pain.001.002.03.xsd">
wenn ich <Document> anpasse funktioniert es. Jedoch steht hier leider noch der Ratten### dahinter. Hast du hierfür noch eine Lösung?

Viele Grüße
Steffen
Bitte warten ..
Mitglied: colinardo
07.10.2013, aktualisiert 08.10.2013
Hallo Steffen,
leider ist das XML-DOM-Objekt bei Namespaces sehr zickig. Daher ist es bei solchen Aufgaben essentiell, eventuell vorkommenden Namespaces zu erwähnen !

Für deinen Fall und wenn die nachfolgenden Elemente keine weiteren anderen Namespaces haben, müsste das hier funktionieren(außer du hast noch mehr Überraschungen parat ):
01.
strXMLINPUT = "c:\input.xml"
02.
strXMLOUTPUT = "c:\output.xml"
03.
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
04.
xmldoc.validateOnParse = False
05.
xmlDoc.async = False
06.
xmlDoc.Load strXMLINPUT
07.
If xmlDoc.parseError.errorCode <> 0 Then
08.
	WScript.Echo xmlDoc.parseError.reason
09.
	WScript.Quit 1
10.
End If
11.
'Setze Namespaces
12.
strNS = "urn:iso:std:iso:20022:tech:xsd:pain.001.002.03"
13.
xmlDoc.setProperty "SelectionLanguage", "XPath"
14.
xmlDoc.setProperty "SelectionNamespaces", "xmlns:default=""" & strNS & """"
15.

16.
Set oDoc = xmlDoc.documentElement
17.

18.
'korrigiere MsgId
19.
Set nodeDatum = oDoc.selectSingleNode("//default:MsgId")
20.
nodeDatum.firstChild.nodeValue= Replace(nodeDatum.firstChild.nodeValue,"/","")
21.

22.
'hole Referenz zum Einfüge-Element in das die neuen Elemente eingefügt werden
23.
Set insertNode = oDoc.selectSingleNode("//default:InitgPty")
24.

25.
'erzeuge Elemente
26.
Set node_Id = xmlDoc.createNode(1,"Id",strNS)
27.
Set node_OrgId = xmlDoc.createNode(1,"OrgId",strNS)
28.
Set node_Othr = xmlDoc.createNode(1,"Othr",strNS)
29.
Set node_Othr_Id = xmlDoc.createNode(1,"Id",strNS)
30.
Set node_Othr_Id_Text = xmldoc.createTextNode("123456789")
31.

32.
'hänge die Elemente aneinander 
33.
node_Othr_Id.appendChild(node_Othr_Id_Text)
34.
node_Othr.appendChild(node_Othr_Id)
35.
node_OrgId.appendChild(node_Othr)
36.
node_Id.appendChild(node_OrgId)
37.
insertNode.appendChild(node_Id)
38.

39.
' Stylesheet: XML Dokument schön formatieren
40.
Set oXsltDoc = CreateObject("Msxml2.DOMDocument.6.0")
41.
oXsltDoc.async = False
42.
oXsltDoc.loadXML( _
43.
  "<?xml version=""1.0"" encoding=""windows-1252""?>" & vbNewLine & _
44.
  "<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"">" & vbNewLine & _
45.
  "	<xsl:output method=""xml"" version=""1.0"" encoding=""UTF-8"" indent=""yes"" />" & vbNewLine & _
46.
  "	<xsl:template match=""node()|@*"">" & vbNewLine & _
47.
  "		<xsl:copy>" & vbNewLine & _
48.
  "			<xsl:apply-templates select=""node()|@*"" />" & vbNewLine & _
49.
  "		</xsl:copy>" & vbNewLine & _
50.
  "	</xsl:template>" & vbNewLine & _
51.
  "</xsl:stylesheet>")
52.
xmlDoc.transformNodeToObject oXsltDoc, xmlDoc
53.

54.
'speichere XML als neues Dokument
55.
xmlDoc.save(strXMLOUTPUT)
56.

57.
Set xmlDoc = Nothing
58.
Set oXsltDoc = Nothing
Grüße Uwe
Bitte warten ..
Mitglied: riatnep
08.10.2013 um 08:18 Uhr
Hallo Uwe,

nun funktioniert alles einwandfrei! Vielen Dank für die tolle Unterstützung.

Viele Grüße
Steffen
Bitte warten ..
Ähnliche Inhalte
VB for Applications

Inhalt einer XML Datei Script ändern

gelöst Frage von chris27584VB for Applications4 Kommentare

Hallo zusammen, in folgendem Script <?xml version="1.0"?> -<SkClientConfig xmlns:xsi=" xmlns:xsd=" <LastServerIndex>1</LastServerIndex> <LastUser>11111</LastUser> <LastWorkplace>2358</LastWorkplace> -<SerializableFont> <FontValue>Microsoft Sans Serif; 8,25pt</FontValue> </SerializableFont> ...

Batch & Shell

XML-Inhalt austauschen

gelöst Frage von noscriptBatch & Shell10 Kommentare

Hallo zusammen Nachdem ich nun das komplette Internet gefühlt zwei Mal gelesen, aber nicht kapiert habe, versuch ichs nun ...

Batch & Shell

XML-Inhalt austauschen V2

gelöst Frage von noscriptBatch & Shell2 Kommentare

hi mit folgendem Script bearbeite ich xml's welche in einem ordner abgelegt sind. nun möchte ich das script so ...

Batch & Shell

Script zum XML Datei Umschreiben

Frage von cberndtBatch & Shell12 Kommentare

Guten Tag. Ich habe folgendes Problem. Ich habe eine XML Datei mit meinen Gutscheincodes sowie weiter Daten aus meiner ...

Neue Wissensbeiträge
Hyper-V
Setup VM W2016 startet nicht in Hyper-V 2016
Erfahrungsbericht von keine-ahnung vor 1 StundeHyper-V2 Kommentare

Moin, sitze gerade über meinem neuen Server und versuche, die VM auf den Host zu prügeln. Jetzt wollte ich ...

Zusammenarbeit

Verfügbar - Samsung PCoIP Zero Client NB-NH (40 Stück)

Tipp von loop.12 vor 3 StundenZusammenarbeit1 Kommentar

Wenn jemand braucht, ich habe 40 Stück: - Samsung PCoIP Zero Client NB-NH - PCoIP Client - - Preis ...

Server-Hardware

HPE Proliant ML350P Gen8 Probleme mit Zugriff auf Raid-Volumes

Erfahrungsbericht von goscho vor 7 StundenServer-Hardware1 Kommentar

Hallo Leute, das Problemgerät: HPE ML350P G8 Windows Server 2012R2 HyperV-Host 8 x 300 GB 10K SAS HDD (1 ...

Humor (lol)

"Linux und 5 Gründe Warum man kein Windows verwenden sollte sondern Ubuntu Linux"

Tipp von Snowbird vor 2 TagenHumor (lol)8 Kommentare

Gerade gefunden. Ja, ist etwas älter, aber irgendwie lustig?

Heiß diskutierte Inhalte
Microsoft
Windows 10 - Kombination von lokalen Benutzerkonten und Benutzern aus einer Domäne
Frage von PappnaseVxVVMicrosoft21 Kommentare

Hi, würde gerne folgendes realisieren, von dem ich gern wüsste, ob es geht. Ich habe einen Raum mit 3 ...

Netzwerkgrundlagen
Windows Server über Außen-IP nicht ansprechbar
Frage von uups81Netzwerkgrundlagen18 Kommentare

Hallo! Es gibt mehrere Windows Server (2016, 2019), die über einen zweiten Netzwerkadapter in einem lokalen Netzwerk miteinander verbunden ...

Batch & Shell
Powershell - Webseite auslesen und Abspeichern ein paar Probleme
gelöst Frage von kime203Batch & Shell17 Kommentare

Hallo alle miteinander, ich hab die Aufgabe eine Webseite auszulesen um Einsatzdaten der Feuerwehr daraus zu gewinnen. Das habe ...

Grafikkarten & Monitore
Grafikkarten Angebot auf Amazon
gelöst Frage von NudellordGrafikkarten & Monitore16 Kommentare

Hallo Community, ich suche eine neue Grafikkarte und bin auf die Nvidea Gforce GTX 1080 ti gestoßen. Und dabei ...