xml blues

ssgglenn

Member
Joined
Jul 14, 2008
Messages
11
Programming Experience
1-3
:( Please help. I am still stuck on this. I entered the following code to read, save, etc. an xml document but I cannot load it. I always catch an exception and I cannot figure out what is wrong with the code.

Project code:
VB.NET:
Structure USERINFO
    Dim FIRST As String
    Dim MI As String
    Dim LAST As String
    Dim TITLE As String
    Dim UNIT As String
    Dim RANK As String
End Structure

Dim USER As USERINFO
Dim USERDATA As New ArrayList
Dim strUDPath As String = "..\UserData.xml"

Private Sub Frm_Utilities_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

    If UserDataLoaded() Then
        Me.lblName.Text = USER.FIRST & " " & USER.MI & " " & USER.LAST
        Me.lblRank.Text = USER.RANK
        Me.lblTitle.Text = USER.TITLE
        Me.lblUnit.Text = USER.UNIT
    Else
        Me.Close()
    End If
End Sub

Private Function UserDataLoaded() As Boolean
    Dim UDReader As New XmlTextReader(strUDPath)
    UDReader.WhitespaceHandling = WhitespaceHandling.None
    Try
        Do Until UDReader.Name = "USER"
            UDReader.Read()
        Loop
        Do While UDReader.Name = "USER"
            UDReader.ReadStartElement("FIRST")
            USER.FIRST = UDReader.ReadElementString("FIRST")
            USER.MI = UDReader.ReadElementString("MI")
            USER.LAST = UDReader.ReadElementString("LAST")
            USER.RANK = UDReader.ReadElementString("RANK")
            USER.TITLE = UDReader.ReadElementString("TITLE")
            USER.UNIT = UDReader.ReadElementString("UNIT")
            UDReader.ReadEndElement()
            USERDATA.Add(USER)
        Loop
        UDReader.Close()
    Catch exml As XmlException
        MessageBox.Show("There is an error in the XML file.", "XML Error")
        Return False
    End Try
    Return True
End Function

Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click
    Panel2.Visible = True

End Sub

Private Sub btnAccept_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAccept.Click

    Me.lblName.Text = USER.FIRST & " " & USER.MI & " " & USER.LAST
    Me.lblRank.Text = USER.RANK
    Me.lblTitle.Text = USER.TITLE
    Me.lblUnit.Text = USER.UNIT

    Me.Panel2.Visible = False

    USER.FIRST = Me.tbFirst.Text
    USER.MI = Me.tbMI.Text
    USER.LAST = Me.tbLast.Text
    USER.RANK = Me.tbRank.Text
    USER.TITLE = Me.tbTitle.Text
    USER.UNIT = Me.tbUnit.Text
    SaveUser()



End Sub


Private Sub SaveUser()
    Dim UserDataWriter As New XmlTextWriter(strUDPath, Nothing)
    UserDataWriter.Formatting = Formatting.Indented
    UserDataWriter.WriteStartDocument()
    UserDataWriter.WriteStartElement("USER")
    For Each USER In USERDATA
        UserDataWriter.WriteStartElement("USER")
        UserDataWriter.WriteAttributeString("FIRST", USER.FIRST)
        UserDataWriter.WriteAttributeString("MI", USER.MI)
        UserDataWriter.WriteAttributeString("LAST", USER.LAST)
        UserDataWriter.WriteAttributeString("RANK", USER.RANK)
        UserDataWriter.WriteAttributeString("TITLE", USER.RANK)
        UserDataWriter.WriteAttributeString("UNIT", USER.UNIT)
        UserDataWriter.WriteEndElement()
    Next
    UserDataWriter.WriteEndElement()
    UserDataWriter.Close()
End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click

    Me.Close()

End Sub

XML CODE
HTML:
<?xml version="1.0" encoding="utf-8" ?>
<!--UserData-->
<USERS>
  <USER>
    <FIRST>GLENN</FIRST>
    <MI>S.</MI>
    <LAST>WILLIAMS</LAST>
    <RANK>SSG</RANK>
    <TITLE>PSG</TITLE>
    <UNIT>A</UNIT>
  </USER>
</USERS>
 
Last edited by a moderator:
Back
Top