Gå til innhold

VB.NET: Litt XML og VB.NET Del 1


Anbefalte innlegg

Dette skal bli en greie der du kan lagre opplysninger i en

kryptert XML fil.

 

 


'På toppen
Imports System.Xml


   'Litt xml og VB.Net
   'Jeg har ikke brukt Textwriter, Dataset, Binding eller Datatabeller fordi
   'jeg vil bruke xPath til dette.
   '
   'Prosedyrene for Lasting og Lagring er der fordi xml filen skal krypterest.
   'Det er jo ingen vits å ha en fil som lagrer passord ligge åpen.
   '
   'Det er ikkje tatt med kode for å lage XML filen vist den ikke eksisterer. 
   'Filen heter brukere.xml og ligger i samme mappe som exe filen til programmet
   '
   'Kontroller:
   'Windowsform 1
   '   frmLagPassord
   'Tekstbokser 4
   '   txtFornavn, txtEtternavn, txtBrukernavn og txtPassord
   'Button 2
   '   btnLoggInn og btnNyBruker
   '
   'XMl filen ser slik ut
   '
   '<?xml version="1.0"?>
   '<brukere>
   '   <bruker brukernavn="1585569952" passord="193409669">
   '       <fornavn>Fornavn her</fornavn>
   '       <etternavn>Etternavn her</etternavn>
   '   </bruker>
   '</brukere>
   '

   Dim sXmlFilnavn As String = "brukere.xml"
   Dim xmlDoc As XmlDocument


   Private Sub LastXmlDoc()
       xmlDoc = New XmlDocument
       xmlDoc.Load(sXmlFilnavn)
   End Sub

   Private Sub LagreXmlDoc()
       xmlDoc.Save(sXmlFilnavn)
       Me.Text = "OK, alt lagret."
   End Sub

   Private Sub LoggInn(ByVal sBRUKERNAVN As String, ByVal sPASSORD As String)

       Dim node As XmlNode = xmlDoc.SelectSingleNode( _
           "/brukere/bruker[@brukernavn='" & _
           sBRUKERNAVN.GetHashCode & _
           "' and @passord='" & _
           sPASSORD.GetHashCode & "']")

       Dim sFornavn As String
       Dim sEtternavn As String
       Try
           sFornavn = node.SelectSingleNode("fornavn").InnerText
           sEtternavn = node.SelectSingleNode("etternavn").InnerText
           Me.Text = "Velkommen " & sFornavn & " " & sEtternavn
       Catch NullRefEx As System.NullReferenceException
           Me.Text = "Feil brukernavn eller passord"
       End Try
   End Sub

   Private Sub NyBruker(ByVal sBrukernavn As String, ByVal sPassord As String)

       If SjekkOmBrukernavnEksisterer(sBrukernavn.GetHashCode) = True Then
           Me.Text = "Brukernavnet eksisterer, velg et annet."
       Else

           'Nytt bruker Element med passord og brukernavn
           Dim nyBrukerElem As XmlElement = xmlDoc.CreateElement("bruker")
           nyBrukerElem.SetAttribute("brukernavn", sBrukernavn.GetHashCode)
           nyBrukerElem.SetAttribute("passord", sPassord.GetHashCode)

           'Nytt fornavn Element
           Dim nyFornavnElem As XmlElement = xmlDoc.CreateElement("fornavn")
           nyFornavnElem.InnerText = txtFornavn.Text

           'Nytt etternavn Element
           Dim nyEtternavnElem As XmlElement = xmlDoc.CreateElement("etternavn")
           nyEtternavnElem.InnerText = txtEtternavn.Text

           'Legger til fornavn og etternavn i nyBrukerElem
           nyBrukerElem.AppendChild(nyFornavnElem)
           nyBrukerElem.AppendChild(nyEtternavnElem)

           'Så kan vi legge til bruker Elementet i xmlDoc
           xmlDoc.DocumentElement.AppendChild(nyBrukerElem)

           'Nå kan vi lagre
           LagreXmlDoc()
       End If
   End Sub

   Private Function SjekkOmBrukernavnEksisterer(ByVal sBRUKERNAVN As String) As Boolean

       Dim node As XmlNode = xmlDoc.SelectSingleNode( _
           "/brukere/bruker[@brukernavn='" & sBRUKERNAVN & "']")
       Try
           If node.SelectSingleNode("@passord").InnerText <> "" Then
               Return True
           End If
       Catch NullRefEx As System.NullReferenceException
           Return False
       End Try

   End Function

   Private Sub frmLagPassord_Load(ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles MyBase.Load
       Try
           LastXmlDoc()
       Catch ex As Exception
           'Finner ikke XML-filen, avslutter.
           Application.Exit()
       End Try

       Me.Text = "Logg deg inn"
   End Sub

   Private Sub btnLoggInn_Click(ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles btnLoggInn.Click

       LoggInn(txtBrukernavn.Text, txtPassord.Text)
   End Sub

   Private Sub btnNyBruker_Click(ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles btnNyBruker.Click

       If txtFornavn.TextLength AndAlso txtEtternavn.TextLength AndAlso _
                   txtBrukernavn.TextLength AndAlso txtPassord.TextLength Then

           Me.Text = "Takk. Behandler..."
           NyBruker(txtBrukernavn.Text, txtPassord.Text)
       Else
           Me.Text = "Alt må fyllest ut."
       End If
   End Sub

 

Dete var det for no.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...