Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1740to1744
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Teststand xml's parsen

Teststand xml's parsen
21.02.2020 09:56:19
Miro
Hallo,
ich bin ein mittel-bis niedrigversierter, aber vor allem pragmatisch veranlagter VBA Programmierer. Ich bin im Besitz folgender Teststand xml
https://www.herber.de/bbs/user/135342.txt
Bislang parse ich schon einfach xml's über obj2XML. Nun, wenn es nur um eine oder 10 Dateien ginge, würde ich es einfach manuell auslesen. Ich habe aber über 400 xml's die ich auswerten will. Ich möchte wissen, siehe Datei, wie ich auf den Ergebnisknoten komme.
Bislang sieht es bei mir wie folgt aus:
...
Do Until TextBox2.Text = z - 2
Application.DisplayAlerts = False
'den Dateipfad mit Dateinamen einem String zuordnen um in im Objekt objXML.Load laden zu können
datName = TextBox1.Text & "\" & Worksheets("Dateinamen").Range("A" & z - 1)
If Not obj2XML.Load(datName) Then
' Fehler beim Laden
MsgBox "Fehler beim Laden des Dokumentes." & vbCrLf & vbCrLf _
& "Grund: " & obj2XML.parseError.reason & vbCrLf _
& "Zeile: " & obj2XML.parseError.Line, vbOKOnly Or vbExclamation, "Fehler"
'Set objXML = Nothing
End If
Set taNode = obj2XML.SelectSingleNode("/trc:TestResults/tr:Extension/ts:TSResultSetProperties/CriticalFailureStack/ts:CriticalFailureStackEntry")
Worksheets("Programmieren").Range("D" & z - 1) = taNode.Text
Loop
...
Ich führe das über eine Userform aus indem ich auf "Parsen" klicke und die Funktionen ausgeführt werden. Führe ich diese Funktion aber aus, kommt die Fehermeldung "Verweis auf nichtdeklariertes Namespräfix 'trc'". Der Knoten heist doch aber trc: Testresults.
Könnt ihr mir weiterhelfen?
Vielen Dank

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Teststand xml's parsen
21.02.2020 12:07:56
Anton
Hallo Miro,
wenn ich dich richtig verstanden habe, dann so?:
Code in Zwischenablage:

Sub b()
  Dim xml As Object, stackentry As Object  
  Set xml = CreateObject("MSXML2.DOMDocument")  
  With xml
    .Load "C:\Users\Anton\Desktop\135342.xml" 'Pfad anpassen
    If .parseerror.ErrorCode <> 0 Then  
      MsgBox "in Zeile:" & .parseerror.Line & " " & _
        .parseerror.srcText & vbCr & .parseerror.reason, vbCritical, "Fehler"
    Else
      For Each stackentry In .getelementsbytagname("ts:CriticalFailureStackEntry")  
        Debug.Print stackentry.xml
      Next
    End If  
  End With  
  Set xml = Nothing  
End Sub  

mfg Anton
Anzeige
@ miroslavm oT
22.02.2020 10:05:12
Anton
AW: @ miroslavm oT
24.02.2020 07:56:26
Miro
Hi,
danke für die Antwort. Ich habe es mal versucht, jedoch springt er direkt in den Debug Modus in die Zeile mit ".Load" und meckert mit "Laufzeitfehler 91, Objektvariable oder With-Blockvariable nicht festgelegt".
Ich versuche es mal weiter
AW: Teststand xml's parsen
24.02.2020 09:53:47
Miro
Okay, habe es hinbekommen, danke vielmals!!
Er gibt nun in meinem Fall den kompletten String des Knotens aus, also alles was nach ts:CriticalFailureStackEntry steht.
Interessant für mich ist aber nur "Read_ProdStep_ReadError". Gibt es eine einfache Methode nur darauf zugreifen zu können? Oder sollte ich den String einfach vor sequenceName=" und eben danach abschneiden?
Anzeige
AW: Teststand xml's parsen
24.02.2020 15:40:14
Anton
Hallo nochmal,
wenn ich dich richtig verstanden habe, dann so?:
Code in Zwischenablage:

Sub b()
  Dim xml As Object, stackentry As Object, attr As Object  
  Set xml = CreateObject("MSXML2.DOMDocument")  
  With xml
    .Load "C:\Users\Anton\Desktop\135342.xml" 'Pfad anpassen
    If .parseerror.ErrorCode <> 0 Then  
      MsgBox "in Zeile:" & .parseerror.Line & " " & _
        .parseerror.srcText & vbCr & .parseerror.reason, vbCritical, "Fehler"
    Else
      For Each stackentry In .getelementsbytagname("ts:CriticalFailureStackEntry")  
        For Each attr In stackentry.Attributes  
          If attr.Name = "sequenceName" Then Debug.Print attr.Value  
        Next
      Next
    End If  
  End With  
  Set xml = Nothing  
End Sub

mfg Anton
Anzeige
AW: Teststand xml's parsen
25.02.2020 09:23:29
Miro
Wow vielen Dank! Das ist so viel schlanker als ich es mit der Instr Funktion gelöst habe :-D
Jetzt weiß ich auch wie ich Attributnamen ansprechen kann.
Also nochmals, vielen lieben Dank!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige