XML Attribut mit Xdoc & VB6 Auslesen

Moin,

Ich versuche aus Folgendem XML File den Wert 11010016 in eine Variable zu schreiben. Leider soll es mit nicht gelingen.

Eine SingleNode Auslesen ist kein Problem:

msgbox = xDoc.selectSingleNode("WBTS.Commissioning.Configuration.Parameters/General.Parameters/File.Author").Text 

aber wie kann ich das Attribut von LCR.Id auslesen ?

<?xml version="1.0" encoding="UTF-8"?>111

mfg jonny

Hi Joe,

Ich versuche aus Folgendem XML File den Wert 11010016 in eine
Variable zu schreiben. Leider soll es mit nicht gelingen.

hmmm. Dann versuchen wir es mal. Zuerst zerlegen uns wir den Text mal in handliche Häppchen, nämlich Zeilen. Ich nehme dazu mal an, Du hättest Deinen Text an die Variable txt übergeben.

Option Explicit

Dim zl() As String, txt As String

Private Sub Command1\_Click()
 zl = Split(txt, VbCrLf)
End Sub

Du siehst das Array Zl()? Keine Angabe, wie viele Felder! Das legt VB mit dem Befehl Split selbst fest. Für Dein Beispiel bedeutet das:
In Zl(0) steht <?xml version="1.0" encoding="UTF-8"?>
in Zl(1) steht
und so weiter.

Eine SingleNode Auslesen ist kein Problem:

msgbox =
xDoc.selectSingleNode(„WBTS.Commissioning.Configuration.Parameters/General.Parameters/File.Author“).Text

aber wie kann ich das Attribut von LCR.Id auslesen ?

<?xml version="1.0" encoding="UTF-8"?>

1

1

1

Nun die Zeilen zu finden, in denen Dein Wert steht ist leicht, der Anfang der Zeile sieht ja immer gleich aus, der Wert ist immer gleich lang, das vereinfacht das Ganze.

In Zl(4) steht:

Wir brauchen also eine Schleife, mit der wir das ganze Array durchsuchen können. Wie viele Felder das Array hat wissen wir nicht, aber VB kennt den kleinsten Index, der steht in LBound(Zl), der größte Index steht in UBound(Zl).

Option Explicit

Dim zl() As String, txt As String, Ret As String

Private Sub Command1\_Click()
 Dim i As Long
 zl = Split(txt, vbCrLf)
 For i = LBound(zl) To UBound(zl)
 If Left(zl(i), 13) = "

Moin, und Halt.
Das gute an dem XML PArser ist das wir mit dem XDoc PArser auf genaue Stellen zugreifen können das es eine Baumstruktur gib.
Wir können also genau auf das Attribut Zielen ohne das ganze zu zerlegen. Wenn der Besuch weg ist werde ich mal schon Funktionierenden Code Posten. der liest schon ein paar sachen aus aber eben nicht das Attribut.
melde mich thx.

Aber Trotzdem schreibe ich mal was ich hier so verstanden haben.

Option Explicit

Dim zl() As String, txt As String, Ret As String

Private Sub Command1\_Click() 'Erklärt sich von selbst !
 Dim i As Long ' Der Zähler fürs Array als 
 'LONG (öhm also kann er mehr als 65535)

 zl = Split(txt, vbCrLf) 'txt beinhaltet die XML Dateiund 
 split teilt alles in Zeilen.
 For i = LBound(zl) To UBound(zl) 'Es wird ein Array angelegt 
 bis keine zeilen mehr 
 kommen 
 If Left(zl(i), 13) = "

Hi Joe,

Das gute an dem XML PArser ist das wir mit dem XDoc PArser auf
genaue Stellen zugreifen können das es eine Baumstruktur gib.
Wir können also genau auf das Attribut Zielen ohne das ganze
zu zerlegen. Wenn der Besuch weg ist werde ich mal schon
Funktionierenden Code Posten. Der liest schon ein paar sachen
aus aber eben nicht das Attribut.

den Text mit VB zu zerlegen ist kein Problem, wie Du siehst.
Was der XML-Parser allerdings treibt, habe ich keine Ahnung. Den habe ich noch nicht gesehen, ich weiß noch nicht mal, was XML ist. :smile:

Bei Problemen mit dem XML Parser bist Du vermutlich im falschen Brett.

Gruß Rainer

Hi Joe,

ein kleines Fehlerchen sehe ich.

For i = LBound(zl) To UBound(zl) 'Es wird ein Array
angelegt bis keine zeilen mehr kommen

Nein. Angelegt ist das Array schon, es enthält auch schon den gesamten Text. Das ist nur eine Zählschleife, die das Array vom ersten bis zum letzen Feld durchläuft.

ich schreiben die Zeile mal um …

Dim Anfang As Long, Ende As Long

Anfang = LBound(zl)
Ende = UBound(zl)

For i = Anfang To Ende
 '....
Next

Wenn Du wüsstest, daß das erste Feld immer Zl(0) ist und das letzte Zl(9), dann könntest Du auch schreiben:

For i = 0 To 9
 '...
Next

Gruß Rainer

juhu,

Bei Problemen mit dem XML Parser bist Du vermutlich im
falschen Brett.

jo, ist halt XMl mit VB6 . böse Mischung. Aber Morgen bin ich einen Tag in Berlin bei einem Kollegen der hin und wieder mit VBA XML files auswertet. ich hoffe er kann mir weiterhelfen.

besten dank, hmm Wo ist Alex…

juhu,

Nein. Angelegt ist das Array schon, es enthält auch schon den
gesamten Text. Das ist nur eine Zählschleife, die das Array
vom ersten bis zum letzen Feld durchläuft.

Oh, wieder eine „Weltverschiebung“ aber sehr gut.
Gibt es vor oder nachteile wenn ich die grösse selber festlege oder sie Variable mit LBound(zl)und UBound(zl)

Eigentlich nur wenn ich nicht weis wieviele Zeilen es sind ?
Wenn ich diese aber selber festlegen, dim moep(60) As String
ist folgendes die bessere lösung ?
For i = 0 To 60
'…
Next

Ich danke dir

Hi Joe,

Eigentlich nur wenn ich nicht weis wieviele Zeilen es sind ?
Wenn ich diese aber selber festlegen, dim moep(60) As String
ist folgendes die bessere lösung ?
For i = 0 To 60
'…
Next

nein, das geht nicht, dann funktioniert Split nicht.
Split will die Größe des Arrays unbedingt selbst festlegen.

Gruß Rainer