Punktuelles im Web Über mich

Hallo und ich bitte Sie um einen kleinen Moment Ihrer Aufmerksamkeit. Diese Webseiten sind umgezogen, genauer gesagt ist dies ein alter Stand, der etwa 9 Jahre alt ist aus einer alten Sicherung wieder auferstanden ist. Inklusive eines HTML-Parsers in PHP und der alten, originalen Inhalte - die natürlich (Stand November 2018) nach und nach aktualisiert werden. Sehen Sie es als Nostalgie oder einfach Spaß an der Sache.
Vielen Dank!

Der Node-Reader unter VB.NET

Der Node-Reader läuft von Knoten zu Knoten durch das Dokument. Besonders wichtig bei dem Node-Reader ist es den Zeiger korrekt weiterzubewegen. Wird ein aktueller Knoten mit der Methode Objekt.ReadInnerXML() ausgelesen, wird der Zeiger automatisch weitergeschoben und verweist auf den nächsten Knoten. Wird hingegen ein Attribut mit der Methode Objekt.GetAttribute("xy") ausgelesen, dann wird der Zeiger nicht auf den nächsten Knoten geschoben. Dies muss explizit mit dem Aufruf Objekt.Read geschehen.

Eine Möglichkeit mit .NET eine XML zu lesen ist der Node-Reader, so etwas wie der Jäger der verlorenen Knoten. Er bewegt sich tatsächlich linear von Knoten zu Knoten durch das Dokument.

Zuerst brauchen wir wieder eine gültige XML.

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<Programm>

  <Ordner>
   <Alter>120</Alter>
   <Suchmuster native="Datum">*.*</Suchmuster>
   <Ort id="23">d:\temp</Ort>
  </Ordner>
  <Ordner>
   <Alter>120</Alter>
   <Suchmuster native="Datum">*.*</Suchmuster>
   <Ort id="12">d:\temp</Ort>
  </Ordner>

</Programm>

Unsere Funktion erhält als Parameter den Dateinamen unserer XML-Datei. Danach initialisieren wir den NodeReader und laden das Dokument für die folgende Auswertung.

Wir lesen mit der While-Schleife einen Knoten nach dem anderen und berücksichtigen nur interessante Knotentypen [NodeType = 1]. Kommentare und anderes lassen wir unberücksichtigt.

Mit einem einfachen "Select Case" springen wir in die weitere Bearbeitung, nachdem wir den Namen des aktuellen Knoten ausgelesen haben [reader.Name].

Sub XMLLesen(ByVal Datei As String)

Dim InfoA, InfoB As String

'XmlNodeReader: Parser für DOM, die Welt besteht aus Knoten...
Dim doc As New XmlDocument : doc.Load(Datei)
Dim reader As XmlNodeReader : reader = New XmlNodeReader(doc)


While reader.Read
If reader.NodeType = 1 Then
    Select Case reader.Name
        Case "Alter"
            Try
                InfoA = reader.ReadInnerXml()
                Console.WriteLine(InfoA)
            Catch
                reader.Read()
            End Try
        Case "Suchmuster"
            Try
                InfoB = reader.GetAttribute("id").ToString()
                reader.Read()
                Console.WriteLine(InfoB)
            Catch
                reader.Read()
            End Try
        Case Else
            reader.Read()
    End Select
Else
    reader.Read()
End If
End While


Console.ReadKey()

End Sub

Der Node-Reader läuft linear durch das gesamte Dokument. Natürlich müssen nicht alle Tags oder Attribute einer XML gelesen werden, man kann sich auf die Informationen beschränken, die man tatsächlich benötigt.

http://www.punktuelles-im-web.net NodeReader.html, zuletzt geändert: 28.4.2010 20:44:00.