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):

<E1EDP19 SEGMENT="1">

<QUALF>002</QUALF>

<IDTNR>20790</IDTNR>

</E1EDP19>

<E1EDP19 SEGMENT="1">

<QUALF>001</QUALF>

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

</E1EDP19>

<E1EDPT1 SEGMENT="1">

<TDID>F01</TDID>

<TSSPRAS>D</TSSPRAS>

<TSSPRAS_ISO>DE</TSSPRAS_ISO>

<E1EDPT2 SEGMENT="1">

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

<TDFORMAT>/</TDFORMAT>

</E1EDPT2>

<E1EDPT2 SEGMENT="1">

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

<TDFORMAT>/</TDFORMAT>

</E1EDPT2>

<E1EDPT2 SEGMENT="1">

<TDLINE>ZEILE3=0676/8251-4318</TDLINE>

<TDFORMAT>/</TDFORMAT>

</E1EDPT2>

<E1EDPT2 SEGMENT="1">

<TDLINE>ZEILE4=ernst.kleedorfer@generali.at</TDLINE>

<TDFORMAT>/</TDFORMAT>

</E1EDPT2>

<E1EDPT2 SEGMENT="1">

<TDLINE>BLOCKSATZ=Links</TDLINE>

<TDFORMAT>/</TDFORMAT>

</E1EDPT2>

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

Next

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)

<E1EDPT2 SEGMENT="1">

<TDLINE>ZEILE4=ernst.kleedorfer@generali.at</TDLINE>

<TDFORMAT>/</TDFORMAT>

</E1EDPT2>

and before

(und vor)

<E1EDPT2 SEGMENT="1">

<TDLINE>BLOCKSATZ=Links</TDLINE>

<TDFORMAT>/</TDFORMAT>

</E1EDPT2>

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 :)

post-359113-0-18494500-1343805298_thumb.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...