Categorieën
  • Mappen Bestanden (1)
  • MS Access Database (0)
  • Spelletjes Vb.net (2)
  • VB.net (5)
  • VBA Visual basic for applications (4)
  • XML LINQ (1)
  • Inhoud blog
  • Reeksen, Dictionaries, Hashtable
  • Vier op een rij
  • Het belang van Mappen en bestanden
  • XML en LINQ
  • Vb.net en Tekstbestanden
  • String
  • Zeeslag
  • Voorwaarden en Lussen
  • Over willekeurige getalen.
  • Van VBA naar VB.net
    Beoordeel dit blog
      Zeer goed
      Goed
      Voldoende
      Nog wat bijwerken
      Nog veel werk aan
     
    Zoeken in blog

    MS Access VBA VB.Net
    Ontwerpen van Database en VB.net voor Dummies
    10-04-2013
    Klik hier om een link te hebben waarmee u dit artikel later terug kunt lezen.XML en LINQ

    Wat is XML

    XML staat voor Extensible Markup Language en is een standaard taal van het World Wide Web Consortium. Met XML kan men gestructureerde gegevens weergeven in de vorm van platte tekst die zowel door een computer als door een mens leesbaar zijn. Het XML-formaat wordt gebruikt om gegevens op te slaan en/of om gegevens over het internet te versturen. XML gebruikt elementen en attributen om gegevens te structureren. Men is echter vrij om de namen voor de elementen en attributen zelf te kiezen gezien de keuze afhangt van wat men met het XML bestand van plan is. De XML-specificatie definieert enkel de syntaxis van elementen, attributen en de andere structuren die in XML-bestanden kunnen voorkomen.

    Wat is LINQ

    LINQ staat voor Language Integrated Query. Het is een taal die door Microsoft ontworpen is en deel uit maakt van het .Net framework en derhalve beschikbaar is in de Express uitgaven van Visual Studio. LINQ doet denken aan SQL. SQL staat voor Structured Query Language en is een krachtige taal om relationele databases zoals MS Access, SQL-server... aan te sturen en te bevragen. De taal is in de jaren ’70 door IBM ontwikkeld. De Syntaxis van LINQ wijkt echter af van deze van SQL. Met LINQ kan men ook gegevens uit XML en Arrays bestanden benaderen. Vanzelfsprekend ondersteund Visual Basic .NET LINQ.
    Met LINQ kan men in VB.net ook XML-bestanden aanmaken.

    Bespreking van mijn class clsLinqNaarXml

    Door gebruik te maken van deze Class kan men met LINQ XML- bestanden creëren, er data aan toevoegen en data opvragen

    Public Class clsLinqNaarXml
        Private Shared strmijnData As String = "c:av_VBNETDatawa_Testen_av_2mijnData.xml"
    

    
        Public Shared Function Geef_mijnData() As XDocument
            Try
                Dim mijnDoc As XDocument = XDocument.Load(strmijnData)
    
                Return mijnDoc
            Catch ex As System.IO.FileNotFoundException
                MessageBox.Show(ex.Message)
                Return Nothing
            End Try
        End Function
    

    
        Public Shared Sub Toev_mijnData(ByVal strNaam As String, ByVal strVNaam As String, ByVal strGesl As String, _
         ByVal shtGebJaar As Short)
            'Het document inladen
            'Dim mijnDoc As XDocument = XDocument.Load("mijnData.xml")
            Dim mijnDoc As XDocument = XDocument.Load(strmijnData)
            'Nieuw XElement op basis van de parameters
            Dim NieuwXElement As New XElement("Persoon", New XElement("Naam", strNaam),
                                              New XElement("VNaam", strVNaam),
                                              New XElement("Gesl", strGesl),
                                              New XElement("GebJaar", shtGebJaar))
            'toeveogen aan het in memory element
            ' mijnDoc.Descendants("Persoon").First.Add(NieuwXElement) toevoegen na eerste element
            mijnDoc.Descendants("Datalijst").Last.Add(NieuwXElement)
            'naar schijf bewaren
            mijnDoc.Save(strmijnData)
        End Sub
    

    
        Public Shared Sub Zoek_OpGels(ByVal strGesl As String)
            'Het document inladen
            Dim mijnDoc As XDocument = XDocument.Load(strmijnData)
            'LINQ expressie opstellen
            Dim zoekOpGesl = From Persoon In mijnDoc.Descendants("Persoon")
            Where CStr(Persoon.Element("Gesl")) = strGesl
            Select Persoon.Element("VNaam").Value
            Dim data As String = String.Empty
            For Each item In zoekOpGesl.Distinct()
                data &= String.Format("- {0}" & vbLf, item)
            Next
            MessageBox.Show(data, String.Format("{0} Voornaam is:", strGesl))
    
        End Sub
    

    
        Public Shared Sub Toev_Lijst(ByVal intIDData As Integer, ByVal strTypeData As String, ByVal strNaamData As String _
                                    , ByVal strOmschrData As String, ByVal strPadBest As String)
            Dim mijnDocX As XDocument = XDocument.Load(strPadBest)
            Dim NieuwXElement As New XElement("Data",
                                              New XElement("IDData", intIDData), _
                                              New XElement("TypeData", strTypeData), _
                                              New XElement("NaamData", strNaamData), _
                                              New XElement("OmschrData", strOmschrData))
            mijnDocX.Descendants("Lijst").Last.Add(NieuwXElement)
            mijnDocX.Save(strPadBest)
    
        End Sub
        

    
        Public Shared Sub MaakNieuwe_Lijst(ByVal strPadBest As String, ByVal intIDData As Integer, ByVal strTypeData As String,
                                           ByVal strNaamData As String, ByVal strOmschrData As String)
            Dim lijstXDoc As New XElement("Lijst",
                                                   New XDeclaration("1.0", "utf-8", "yes"),
                                                   New XComment("Een lijst met data!"),
                                                        New XElement("Data",
                                                        New XElement("IDData", intIDData),
                                                        New XElement("TypeData", strTypeData),
                                                        New XElement("NaamData", strNaamData),
                                                        New XElement("OmschrData", strOmschrData)))
            lijstXDoc.Save(strPadBest)
    
        End Sub
    End Class
    

    Toepassen van bovenstaande klas op het formulier frmHoofd

    Imports System.Xml.Linq

    
    Public Class frmHoofd
    
        Private Sub frmHoofd_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.cbgGeslZ.SelectedText = "Man"
            Me.cboGesl.SelectedText = "Man"
            Me.txtmijnData.Text = clsLinqNaarXml.Geef_mijnData.ToString
        End Sub
    

    
        Private Sub cmdToevoegen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdToevoegen.Click
            clsLinqNaarXml.Toev_mijnData(Me.txtNaam.Text, Me.txtVNaam.Text, Me.cboGesl.Text, Me.txtGebJaar.Text)
            Me.txtmijnData.Text = clsLinqNaarXml.Geef_mijnData.ToString
        End Sub
    

    
        Private Sub cmdGeslZ_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdGeslZ.Click
            clsLinqNaarXml.Zoek_OpGels(Me.cbgGeslZ.Text)
        End Sub
    

    
        Private Sub cmd_frm_xml_maken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
         Handles cmd_frm_xml_maken.Click
            frmXMLMaken.Show()
            frmXMLMaken.Visible = True
    
        End Su
    End Class
    

    Hier het formulier waar de class op toegepast wordt.

    Formulier

    Berekeningen met LINQ zoals in de class clsDataSpel

    Stel een XML bestand ppSpel.xml met volgende structuur:

    XML-formulier

    Ten einde berekeningen te kunnen uitvoeren op dit bestand creëren wij de clsDataSpel

    Public Class clsDataSpel
        Private Shared _strppData As String = My.Computer.FileSystem.CurrentDirectory & "ppDatappSpel.xml"
        Private _datum As String

    
        Public Sub New()
    
        End Sub
    

    
        Public Shared Function Geef_ppData() As XDocument
            Try
                Dim mijnDoc As XDocument = XDocument.Load(_strppData)
    
                Return mijnDoc
            Catch ex As System.IO.FileNotFoundException
                MessageBox.Show(ex.Message & vbCrLf & "Databestand niet gevonden!")
                Return Nothing
            End Try
        End Function
      

      
        Public Shared Sub Toev_ppData(ByVal strNaam As String, ByVal strDatum As String, ByVal strGewonnen As String)
            'Het document inladen
    
            Dim mijnDoc As XDocument = XDocument.Load(_strppData)
            'Nieuw XElement op basis van de parameters
            Dim NieuwXElement As New XElement("resultaat", New XElement("naam", strNaam),
                                              New XElement("datum", strDatum),
                                              New XElement("gewonnen", strGewonnen))
    
            'toevoegen aan het in memory element
    
            mijnDoc.Descendants("spel").Last.Add(NieuwXElement)
            'naar schijf bewaren
            mijnDoc.Save(_strppData)
        End Sub
    

    
        Public Shared Function Aant_Spel() As Integer
            Dim mijnDoc As XDocument = XDocument.Load(_strppData)
            Dim Aant As Integer = (From a In mijnDoc.Descendants("resultaat") Select a).Count
            Return Aant
        End Function
    

    
        Public Shared Function pp_Gewonnen() As Integer
            Dim mijnDoc As XDocument = XDocument.Load(_strppData)
            Dim Aant As Integer = (From a In mijnDoc.Descendants("resultaat") Where a.Element("gewonnen") = "n" Select a).Count
            Return Aant
        End Function
    

    
        Public Shared Function Naam_Aant_Spel(ByVal strNaam As String) As Integer
            Dim mijnDoc As XDocument = XDocument.Load(_strppData)
            Dim Aant As Integer = (From a In mijnDoc.Descendants("resultaat")  _
            Where CStr(a.Element("naam").Value) = strNaam Select a.Element("naam")).Count
            Return Aant
        End Function
    

    
        Public Shared Function Naam_Gewonnen(ByVal strNaam As String) As Integer
            Dim mijnDoc As XDocument = XDocument.Load(_strppData)
    
            Dim Aant As Integer = (From a In mijnDoc.Descendants("resultaat") Where a.Element("gewonnen") = "j"  _
            AndAlso a.Element("naam") = strNaam Select a).Count
            
            Return Aant
        End Function
     

       
        Public Shared Function Namen() As List(Of String)
            Dim mijnDoc As XDocument = XDocument.Load(_strppData)
            
            Dim Allenamen = From a In mijnDoc.Descendants("resultaat") Order By a.Element("naam").Value _
             Select a.Element("naam").Value Distinct
    
            Dim _Namen As New List(Of String)
    
            For Each strNaam In Allenamen
                _Namen.Add(strNaam)
                
            Next strNaam
            Return _Namen
            Return Nothing
        End Function
    

    
        ReadOnly Property Datum
            Get
                Datum = _datum
            End Get
        End Property
    

    
        Public Shared Function GeefDatum() As String
            Return Date.Now.Day.ToString & "/" & Date.Now.Month.ToString & "/" & Date.Now.Year.ToString
        End Function
    
    End Class
    
    

    Bij het opstarten van formulier hieronder wordt gebruik gemaakt van de class clsDataSpel.

    XML-formulier
    Public Class frmStart
    
        Private Sub frmStart_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'lijst vullen van spelers
            
            Dim strNamen As New List(Of String)
            strNamen = clsDataSpel.Namen
            For intTelNamen = 0 To strNamen.Count - 1
                Me.lstSpelers.Items.Add(strNamen(intTelNamen))
            Next
            Me.lstSpelers.SelectedIndex = 0
            'resultaten van pietje pek weergeven
            Dim strResulPP As String = "PIETJE PEK speelde " & clsDataSpel.Aant_Spel.ToString & " maal" _
                                       & vbCrLf & " en won " & clsDataSpel.pp_Gewonnen.ToString & " maal !"
            Me.lblResul_PP.Text = strResulPP
    
           'resultaten speler blanken
            Me.lblResul_Sp.Text = ""
        End Sub
    

    
        Private Sub lstSpelers_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstSpelers.Click
            Dim strNaamSpeler As String = Me.lstSpelers.SelectedItem.ToString
            Dim strResulSp As String = strNaamSpeler.ToUpper & " speelde " & clsDataSpel.Naam_Aant_Spel(strNaamSpeler).ToString & " maal" _
                                       & vbCrLf & " en won " & clsDataSpel.Naam_Gewonnen(strNaamSpeler).ToString & " maal !"
            Me.lblResul_Sp.Text = strResulSp
        End Sub
    

    
        Private Sub lstSpelers_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstSpelers.DoubleClick
            Me.txtNaam.Text = Me.lstSpelers.SelectedItem.ToString
        End Sub
    
       
    

    10-04-2013 om 00:00 geschreven door Toon

    0 1 2 3 4 5 - Gemiddelde waardering: 0/5 - (0 Stemmen)
    Categorie:XML LINQ
    >> Reageer (0)


    Archief per week
  • 29/04-05/05 2013
  • 08/04-14/04 2013
  • 01/04-07/04 2013
  • 25/03-31/03 2013

    E-mail mij

    Druk op onderstaande knop om mij te e-mailen.


    Gastenboek

    Druk op onderstaande knop om een berichtje achter te laten in mijn gastenboek


    Blog als favoriet !


    Blog tegen de regels? Meld het ons!
    Gratis blog op http://blog.seniorennet.be - SeniorenNet Blogs, eenvoudig, gratis en snel jouw eigen blog!