WinCC XML Daten Lesen mit VB-Script

Lennard1005

Level-2
Beiträge
20
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen,

ich möchte aus einer XML Datei die ManufacturingOrderNumber und die ProductNumber auslesen.
Leider komme ich nicht wirklich weiter, da ich noch nicht so viel Erfahrung mit VB-Script habe.
Ich habe mir schon mal das Beispielprojekt von Siemens heruntergeladen und einiges probiert.
Eigentlich sollte das ja nicht so schwer sein....

1721975302870.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im Beispielprogramm von Siemens werden die drei Variablen Material, Pressure und Temperature gelesen.
Was mich ein bisschen verwirrt ist das meine XML Datei anders aussieht.
Tests mit dem gleichen XML Schema wie von Siemens funktionierten.
(Ist das erste XML Projekt für mich)

Beispielcode von Siemens:
Code:
Sub Read_XML_from_file()

Dim XMLo, XMLroot, item, tagName, tagValue


' Catch errors -- Fehler abfangen
On Error Resume Next


' Create file object -- Objekt erstellen
Set XMLo = CreateObject("MSXML.DOMDocument")


XMLo.Load("c:\Test123\test.xml")

Set XMLroot= XMLo.documentElement


For Each item In XMLroot.childNodes

    ShowSystemAlarm "Reading XML: """ & item.getAttribute("name") _

                    & """= """ & item.getAttribute("value") & """"

    tagName= item.getAttribute("name")

    tagValue= item.getAttribute("value")

    SmartTags(tagName)= tagValue

Next


If Err.Number <> 0 Then

    ShowSystemAlarm "Error #" & CStr(Err.Number) & " " & Err.Description

    Err.Clear

    Exit Sub

End If


' Tidy up -- Aufraeumen
ShowSystemAlarm "Readout of XML data was successful!"


End Sub
 

Anhänge

  • Screenshot 2024-07-26 083834.png
    Screenshot 2024-07-26 083834.png
    18,3 KB · Aufrufe: 8
Zuletzt bearbeitet von einem Moderator:
ein ansatz
Code:
Set fso = CreateObject("Scripting.FileSystemObject")
set indatei = fso.openTextFile("C:\datei.xml",1)

do while indatei.atendofstream <> true

    startpos = instr(inzeile,"<ManufaturingOrderNumber>")
    if startpos > 0 then
        endpos = instr(startpos+1,inzeile,"<")
        MON = mid(inzeile,startpos+1,endpos-startpos-1)
    end if
loop
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Versuche es mal so in die Richtung (natürlich ungetestet):
Code:
...
Set XMLroot= XMLo.documentElement
OrderNumber=XMLroot.selectSingleNode("/RecipeDataTransferOut/RecipeComponentData/ManufacturingOrderNumber").text
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Versuche es mal so in die Richtung (natürlich ungetestet):
Code:
...
Set XMLroot= XMLo.documentElement
OrderNumber=XMLroot.selectSingleNode("/RecipeDataTransferOut/RecipeComponentData/ManufacturingOrderNumber").text
Mega Danke!!!!
Kannst du mir verraten woher du die befehle kennst?
Hast du vielleicht eine Internet Seite für mich?
 
Ich habe nach "MSXML.DOMDocument" gegoogelt.
Da findet man dann ein paar Beispiele auf Stackoverflow.

Und der übergebene String ("/RecipeDataTransferOut/RecipeComponentData/ManufacturingOrderNumber") ist ein X-Path.
Hier ein paar Beispiele von Wikipedia, was man mit einem X-Path so machen kann:

1721979553201.png
 
Zurück
Oben