XML / XML auswerten mit VisualBasic.NET

XML auswerten mit VisualBasic.NET

XML auswerten mit VisualBasic.NET

➪ Das .NET-Framework bietet zahlreiche Klassen zur effizienten Auswertung von XML. Hier finden Sie einige Beispiele in VisualBasic.NET.

Auf dieser Seite:

XML-Dokumente lesen mit XmlTextReader

Objekte der Klasse XmlTextReader lesen ein XML-Dokument sequenziell durch.


 Public Sub VersuchXMLTextReader()
  Try
   Dim reader As XmlTextReader
   reader = New XmlTextReader(xmlurl)
   reader.WhitespaceHandling = WhitespaceHandling.None
   While (reader.Read())
    Console.WriteLine("{0}: {1}: {2}", _
            reader.NodeType.ToString(), _
            reader.Name, reader.Value)
   End While
   reader.Close()
  Catch ex As Exception
   Console.WriteLine(ex.Message)
  End Try
 End Sub

DOM-Programmierung

Die Auswertung von XML-Dokumenten mit Xml.XmlDocument ermöglicht den effizienten Einsatz von XPath. Damit lassen sich auch effizient XSL-Konvertierungen automatisieren. Nehmen Sie an, das XML-Input-Dokument hätte diesen Aufbau:


<ROOT>
  <xslt in="C:/wg/ds.xml" 
        out="C:/wg/ds.html" 
        style="C:/wg/XML2HTML.xslt"/>
  <echo>Die XSL-Transformation ist erfolgt.</echo>
</ROOT>

Eine Auswertung des XML-Dokuments mit folgender Logik liest die Elemente aus in Objekte anderer Klassen, die dann die weiteren Aktivitäten übernehmen, in diesem Fall die XSL-1.0-Transformation von XML nach HTML.


 Sub ReadMyANT()
  Dim dom As New Xml.XmlDocument
  Dim sinput As String
  Dim soutput As String
  Dim sstyle As String
  Dim t As Xml.Xsl.XslCompiledTransform
  dom.Load("C:/wg/myANT.xml")
  For Each n As Xml.XmlNode In _
   dom.SelectNodes("/ROOT/child::*")
   If n.LocalName = "echo" Then
    Console.WriteLine(n.InnerText)
   ElseIf n.LocalName = "xslt" Then
    sinput = n.Attributes.GetNamedItem("in").InnerText
    soutput = n.Attributes.GetNamedItem("out").InnerText
    sstyle = n.Attributes.GetNamedItem("style").InnerText
    t = New Xml.Xsl.XslCompiledTransform
    t.Load(sstyle)
    t.Transform(sinput, soutput)
   End If
  Next
 End Sub

LINQ

Von der Syntax hat LINQ einige Ähnlichkeit mit XQuery.


Public Sub LINQDemo()
  Try
   Dim myroot As System.Xml.Linq.XElement 
   myroot = System.Xml.Linq.XElement.Load("menschen.xml")
   Dim lmenschen As IEnumerable(Of System.Xml.Linq.XElement)
   lmenschen = From el In myroot.Elements("Mensch")
      Where el.Element("Nachname") <> "RIELOS"
      Order By el.Element("Nachname").ToString Descending
      Select el
   For Each eMensch As XElement In lmenschen
    Console.WriteLine("{0} {1} ist {2} Jahre alt", 
     eMensch.Element("Vorname").Value, 
     eMensch.Element("Nachname").Value, 
     eMensch.Element("Alter").Value)
   Next
  Catch ex As Exception
   Console.WriteLine("LINQDemo: {0}", ex.Message)
   Console.WriteLine()
  End Try
 End Sub

wg / 5. April 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/LINQ.html