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 Automatisches Hinzufügen eines statischen Parameter per batch in mehreren xml Dateien

Mitglied: muhmachtdiekuh

muhmachtdiekuh (Level 1) - Jetzt verbinden

27.05.2014 um 14:26 Uhr, 1461 Aufrufe, 4 Kommentare

Hallo zusammen.

Folgendes Szenario bei dem ich Hilfe benötige.

Beim Export eines Lieferscheins wird für jeden Lieferschein eine xml Datei erzeugt, welche in ein Tool des Versanddienstleisters importiert wird. Der Austausch findet über einen fest definierten Ordner statt, aus dem alle Dateien durch das Tool von UPS importiert werden. Dieser Ordner ist frei wählbar.

Nun möchte ich gern per Batch und geplantem Task vor Import in das Tool des Versanddienstleisters die xml verändern respektive um einen statischen Wert erweitern und in veränderter Kopie in einem anderen Ordner ablegen.

Hier der Code einer Beispieldatei:

Ursprungsversion:
<?xml version='1.0' encoding="ISO-8859-1"?>
<OpenShipments xmlns="x-schema:OpenShipments.xdr">
<OpenShipment ShipmentOption="" ProcessStatus="">
<ShipTo>
<CompanyOrName>Test User</CompanyOrName><Attention></Attention><Address1>Teststraße 1</Address1><CountryTerritory>DE</CountryTerritory><PostalCode>12345</PostalCode><CityOrTown>testsadt</CityOrTown></ShipTo>
<ShipmentInformation><ServiceType>ST</ServiceType><PackageType>CP</PackageType><ShipmentActualWeight>0,9</ShipmentActualWeight><Reference1>100363</Reference1><Reference2>211196</Reference2><Reference3>111197</Reference3><NumberOfPackages>1</NumberOfPackages><SpecialInstructionForShipment></SpecialInstructionForShipment></ShipmentInformation>
</OpenShipment>
</OpenShipments>

veränderte Version:
<?xml version='1.0' encoding="ISO-8859-1"?>
<OpenShipments xmlns="x-schema:OpenShipments.xdr">
<OpenShipment ShipmentOption="" ProcessStatus="">
<ShipTo>
<CompanyOrName>Test User</CompanyOrName><Attention></Attention><Address1>Teststraße 1</Address1><CountryTerritory>DE</CountryTerritory><PostalCode>12345</PostalCode><CityOrTown>testsadt</CityOrTown></ShipTo>
<ShipmentInformation><ServiceType>ST</ServiceType><PackageType>CP</PackageType><ShipmentActualWeight>0,9</ShipmentActualWeight><Reference1>100363</Reference1><Reference2>211196</Reference2><Reference3>111197</Reference3><NumberOfPackages>1</NumberOfPackages><SpecialInstructionForShipment></SpecialInstructionForShipment><profileName>standard</profileName></ShipmentInformation>
</OpenShipment>
</OpenShipments>

Der hinzuzufügende statische Wert ist in der veränderten Version fett gekennzeichnet.

Kann mir da jemand behilflich sein? Meine Batchkenntnisse hören leider beim "hello world" auf

Vielen Dank für Ideen und Anregungen.
Gruß
Stefan

Mitglied: colinardo
LÖSUNG 27.05.2014, aktualisiert 28.05.2014
Hallo Stefan, Willkommen auf Administrator.de!
Hier eine Lösung mit Powershell um das XML-File azupassen:

Für ein einzelnes XML-File
01.
$fileIN = "C:\Ordner\shipment.xml" 
02.
$fileOUT = "C:\andererOrdner\shipment.xml" 
03.
 
04.
$xml = New-Object XML 
05.
$xml.Load($fileIN) 
06.
 
07.
# Neues Element erzeugen 
08.
$el = $xml.CreateElement("profileName","x-schema:OpenShipments.xdr") 
09.
$txtnode = $xml.CreateTextNode("standard") 
10.
$el.AppendChild($txtnode) | out-null 
11.
 
12.
# Das neue Element im entsprechenden Knoten hinzufügen 
13.
$xml.OpenShipments.OpenShipment.ShipmentInformation.AppendChild($el) | out-null 
14.
 
15.
#Neues XML-File speichern 
16.
$xml.Save($fileOUT)
Für einen ganzen Ordner mit XML-Dateien
01.
$folderIN = "C:\OrdnerIN" 
02.
$folderOUT = "C:\OrdnerOUT" 
03.
$folderErledigt = "C:\OriginalErledigt" 
04.
 
05.
foreach($file in (dir "$folderIN\*.xml") | ?{!$_.PSIsContainer}){ 
06.
    $xml = New-Object XML     
07.
    $xml.Load($file.FullName) 
08.
 
09.
    # Neues Element erzeugen 
10.
    $el = $xml.CreateElement("profileName","x-schema:OpenShipments.xdr") 
11.
    $txtnode = $xml.CreateTextNode("standard") 
12.
    $el.AppendChild($txtnode) | out-null 
13.
 
14.
    # Element hinzufügen 
15.
    $xml.OpenShipments.OpenShipment.ShipmentInformation.AppendChild($el) | out-null 
16.
 
17.
    #Neues XML-File im anderen Ordner speichern 
18.
    $xml.Save("$folderOUT\" + $file.Name) 
19.
 
20.
    # Original-File in einem AblageOrdner speichern 
21.
    move-item $File.FullName -Destination $folderErledigt -Force 
22.
}
Grüße Uwe

mäh sagte das Schaaf als es von der Kuh verspeist wurde
Bitte warten ..
Mitglied: muhmachtdiekuh
27.05.2014 um 16:42 Uhr
Wunderbar. Script 1 funktioniert so, wie ich es brauche. Script 2 werde ich morgen testen.

Vielen Dank für die schnelle und kompetente Hilfe.

Wenn ich weitere Elemente erzeugen und hinzufügen möchte, kann ich das wie in Zeile 10- 12 bzw. 15 fortführen? Und ist es möglich ein Element im Element auf diese Weise zu erzeugen, wenn man sich an die korrekte Reihenfolge hält ?

zum Verständnis: Die kompletten nachfolgenden Elemente müssten erzeugt werden, was ich auch gern so wie in Zeile 9 bis 15 realisieren würde. Ist es mit dem vorgegebenem Syntax möglich? Brauche nur nen Beispiel

<QVNOption>
<QVNRecipientAndNotificationTypes>
<CompanyOrName> CompanyOrName </CompanyOrName> 1
<ContactName> ContactName </ContactName> 35
<EMailAddress> EMailAddress </EMailAddress> 50 R
<LabelCreation> Label Creation </LabelCreation> 1
<In Transit> In Transit </InTransit> 1
<Ship> Ship </Ship> 1
<Exception> Exception </Exception> 1
<Delivery> Delivery </Delivery> 1
</QVNRecipientAndNotificationTypes>
<ShipFromCompanyOrName> ShipFromCompanyOrName </ShipFromCompanyOrName> 35
<FailedEMailAddress> FailedEMailAddress </FailedEMailAddress> 50
<SubjectLine> SubjectLine </SubjectLine> 75 R
<Memo> Memo </Memo> 150
</QVNOption>


Gruß
Stefan
Bitte warten ..
Mitglied: colinardo
LÖSUNG 27.05.2014, aktualisiert 28.05.2014
Hi Stefan,
öhm das ist aber kein valides XML was du da gepostet hast, die Zahlen und Zeichen außerhalb der Tags sind normalerweise nicht erlaubt!

Beispiel:
wenn die Nodes irgendwo unterhalb vom Node-Tree OpenShipments eingefügt werden sollen so ("die Namespace Angabe ist hier nötig beim Erzeugen von Elementen da Oberhalb ein Namespace angegeben ist!")
01.
# Obersten Knoten erzeugen 
02.
$elQVNOption = $xml.CreateElement("QVNOption","x-schema:OpenShipments.xdr") 
03.
 
04.
# Nachfolgenden Knoten erzeugen 
05.
$elQVNREC = $xml.CreateElement("QVNRecipientAndNotificationTypes","x-schema:OpenShipments.xdr") 
06.
 
07.
# Elemente und deren Textnodes erzeugen 
08.
$elCompanyOrName = $xml.CreateElement("CompanyOrName","x-schema:OpenShipments.xdr") 
09.
#Textknoten für das Element erzeugen (dies ist der Textinhalt des Elementes) 
10.
$elCompanyOrNameText = $xml.CreateTextNode("FirmaXYZ") 
11.
#Textknoten in das Element hängen 
12.
$elCompanyOrName.AppendChild($elCompanyOrNameText) 
13.
 
14.
# usw...... 
15.
... 
16.
.. 
17.
18.
# Elemente im Knoten **QVNRecipientAndNotificationTypes** hinzufügen 
19.
$elQVNREC.AppendChild($elCompanyOrName) 
20.
$elQVNREC.AppendChild($elContactName) 
21.
 
22.
# usw... 
23.
.. 
24.
 
25.
# Knoten **QVNRecipientAndNotificationTypes** an den Knoten QVNOption anhängen 
26.
$elQVNOption.AppendChild($elQVNREC) 
27.
 
28.
# Und dann zum Schluss den gesamten erzeugten Tree an der richtigen Stelle wie oben in Zeile 13 des ersten Scripts einhängen..
Verfügbare Methoden, Eigenschaften, Beispiele etc. falls Attribute usw. hinzugefügt werden müssen, kannst du hier in der Referenz nachlesen

Grüße Uwe
Bitte warten ..
Mitglied: muhmachtdiekuh
28.05.2014 um 07:12 Uhr
Guten Morgen.

die Zahlen und Zeichen habe ich einfach aus der Tabelle der UPS Funktionsbeschreibung. Dort wird nur die maximale Zeichenlänge angegeben. War der schnellste Weg ;)

Vielen Dank für die ausführliche Hilfe. Nun habe ich alles, was ich benötige.

Ich danke vielmals für den schnellen und kompetenten Support.

Gruß
Stefan
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch XML Importer - Import von Dateien mittels Batch und xml-File

gelöst Frage von DeeJayBeeBatch & Shell7 Kommentare

Hallo zusammen, ich habe gerade folgendes Problem: Ein Scanner scannt Dokumente in ein Verzeichnis C:\scans\auftraege Er benennt jedes Dokument ...

XML

CSharp XML node hinzufügen

gelöst Frage von Sirius91XML2 Kommentare

Hallo liebe Community, wahrscheinlich ist die Antwort sehr simpel aber ich komme einfach nicht darauf bzw. finde nicht der ...

Batch & Shell

Powershell XML elemente hinzufügen

gelöst Frage von H41mSh1C0RBatch & Shell3 Kommentare

Hi@PS Profi's Variante 1: Variante2: Was macht sich besser beim Zugriff auf die Elemente? Variante 1 bekomme ich in ...

Batch & Shell

Anfangstext bei einer xml Datei bearbeiten durch Batch Datei

gelöst Frage von GrauerStarBatch & Shell5 Kommentare

Hallo :D Ist das möglich so wie ich mir das vorstelle?: Eine Batch Datei die in einem Ordner automatisch ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 3 TagenHumor (lol)5 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...