Jump to content
Strawberry Orange Banana Lime Leaf Slate Sky Blueberry Grape Watermelon Chocolate Marble
Strawberry Orange Banana Lime Leaf Slate Sky Blueberry Grape Watermelon Chocolate Marble

MSFN is made available via donations, subscriptions and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. Alternatively, register and become a site sponsor/subscriber and ads will be disabled automatically. 

Recommended Posts

This is the product tag (Das ist das XML Tag):







<KTEXT>Führerscheinetui - PERSONALISIERT - Gene</KTEXT>







<TDLINE>ZEILE1=Bez.Dir. Ernst Kleedorfer</TDLINE>




<TDLINE>ZEILE2=A-1130 Wien, Hietzinger Kai 133</TDLINE>















complete xml structure can be found as xml.jpg attachment

(die xml struktur findet sich im xml.jpg anhang)

My script so far:

(Das ist das Lesescript)

'Individualtexte aus XML-Datei in Array auslesen

Dim oXml: Set oXml = CreateObject("Msxml2.DomDocument.3.0")

oXml.async = False

oXml.Load (strDatei)

Dim colNodes: Set colNodes = oXml.SelectNodes("//ORDERS05/IDOC/E1EDP01/E1EDPT1/E1EDPT2/TDLINE") '//*[string(text())]")

Dim Node

i = 0

For Each Node In colNodes

If InStr(1, Node.Text, "ZEILE") = 1 Then

Content(i) = Node.Text

i = i + 1

End If


Set colNodes = Nothing

Set oXml = Nothing

This works great. (Funktioniert problemlos)

Now I want to add a node <drucktext> after tag

(Jetzt möchte ich ein Tag <drucktext> einfügen, und zwar nach)





and before

(und vor)





my script so far:

Option Explicit

Dim strResult As String

Sub Test()

'drucktext als neues node anfügen

Dim oXml: Set oXml = CreateObject("Msxml2.DomDocument.6.0")

oXml.async = False

oXml.Load ("c:\temp\hallo.xml")

' generate an Element from an XML string

Dim xmlString

xmlString = "<drucktext>" & "1:" & "</drucktext>"

Dim newElt

Set newElt = GetElementFromXmlString(xmlString) 'see function at the bottom

Dim node1

Set node1 = oXml.DocumentElement.SelectSingleNode("//ORDERS05/IDOC/E1EDP01/E1EDPT2")

' append the element to the node

node1.appendChild (newElt)

'***Edit to your needs.

'Save the xml document with the new settings.

oXml.Save ("c:\temp\hallo.xml")

Set node1 = Nothing

Set newElt = Nothing

Set oXml = Nothing

End Sub

Function GetElementFromXmlString(xmlString)

Dim doc

Set doc = CreateObject("Msxml2.DOMDocument.6.0")

doc.async = False

doc.preserveWhiteSpace = False

doc.LoadXML (xmlString)

Set GetElementFromXmlString = doc.DocumentElement

End Function

The problem is that it fatches the first appearance of //orders05/idoc/E1EDP01 but I cannot tell in advance if my product holding the lines "zeile1 = asldfjlasdjkf" is situated at the top or bottom or in between.

I thought of changing the segment information but as I get the files as it is I may do validating or changing it to make it of better use.

Das Problem ist, dass mein Script das erste Vorkommen von E1EDP01 im Baum //Orders05/idoc findet. Da ich aber nicht sagen kann wo sich mein Produkt in der Reihenfolge befindet, bricht das Script mit einem

"Objekt nicht vorhanden" -> node1 is null da im ersten Vorkommen von E1EDP01 keine E1EDPT1 existiert. Möglicherweise hilft ein vorheriges Bearbeiten der XML-Datei.

Eventuell hat jemand auch ein Script das das Positionieren der Nodes z.B sagen wir nach der 5. Wiederholung von E1EDP01 erlaubt, da ich vorher bestimmen kann wo ich hin möchte, oder auch ganz anders vorgehen.

Danke für jede Hilfe :)


Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...