我開始這是一個自我教學練習,現在我很難過。如果有人能夠幫助我學習,我將非常感激,通過走過我將要解釋的練習和必要的內容。使用vb.net通過xml存儲數據練習
我寫了一個非常基本的,可視化的基本應用程序,其功能如下:
- 通過文本框接受文本輸入
- Save按鈕保存在XML文件中的信息
- 清除按鈕,從刪除信息文本框
- 檢索按鈕在文本框中讀取XML文件,並顯示數據信息
個有4個標籤配對圖形我的形式有4個文本框標記如下:
- 名稱
- 顏色
- 數
- 郵編
然後它有3個按鍵,一個保存數據,一個清除數據(來自表單,而不是xml文件),另一個檢索數據(重新顯示在文本框中)。
這是到目前爲止我的代碼:
Imports System.Xml
Public Class Form1
Private Sub Save_Data(Optional ByVal name As String = "", Optional ByVal color As String = "", Optional ByVal number As String = "", Optional ByVal zipcode As String = "")
Dim writer As New XmlTextWriter("saved_data.xml", System.Text.Encoding.UTF8)
Try
writer.WriteStartDocument(True)
writer.Formatting = Formatting.Indented
writer.Indentation = 2
writer.WriteStartElement("Saved_Data")
If Not txtName.Text = "" Then
writer.WriteStartElement("name")
writer.WriteString(name)
writer.WriteEndElement()
End If
If Not txtColor.Text = "" Then
writer.WriteStartElement("color")
writer.WriteString(color)
writer.WriteEndElement()
End If
If Not txtNumber.Text = "" Then
writer.WriteStartElement("number")
writer.WriteString(number)
writer.WriteEndElement()
End If
If Not txtZipCode.Text = "" Then
writer.WriteStartElement("zipcode")
writer.WriteString(zipcode)
writer.WriteEndElement()
End If
writer.WriteEndElement()
Catch ex As Exception
MessageBox.Show("There was an error storing the data!" + vbCrLf + vbCrLf + "Error: " + ex.Message)
Finally
writer.Close()
End Try
End Sub
Private Sub Retrieve_Data()
Dim reader As New XmlTextReader("saved_data.xml")
Try
While reader.Read()
reader.ReadStartElement("Saved_Data")
If Not reader.IsEmptyElement Then
reader.ReadStartElement("name")
txtName.Text = reader.ReadString()
reader.ReadEndElement()
End If
If Not reader.IsEmptyElement Then
reader.ReadStartElement("color")
txtColor.Text = reader.ReadString()
reader.ReadEndElement()
End If
If Not reader.IsEmptyElement Then
reader.ReadStartElement("number")
txtNumber.Text = reader.ReadString()
reader.ReadEndElement()
End If
If Not reader.IsEmptyElement Then
reader.ReadStartElement("zipcode")
txtZipCode.Text = reader.ReadString()
reader.ReadEndElement()
End If
reader.ReadEndElement()
End While
Catch ex As Exception
MessageBox.Show("There was an error retrieving the data!" + vbCrLf + vbCrLf + "Error: " + ex.Message)
Finally
reader.Close()
End Try
End Sub
Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click
Dim strName As String = txtName.Text
Dim strColor As String = txtColor.Text
Dim strNumber As String = txtNumber.Text
Dim strZipCode As String = txtZipCode.Text
Save_Data(strName, strColor, strNumber, strZipCode)
End Sub
Private Sub btnClear_Click(sender As System.Object, e As System.EventArgs) Handles btnClear.Click
txtName.Text = ""
txtColor.Text = ""
txtNumber.Text = ""
txtZipCode.Text = ""
End Sub
Private Sub btnRetrieve_Click(sender As System.Object, e As System.EventArgs) Handles btnRetrieve.Click
Retrieve_Data()
End Sub
End Class
請記住,我從來沒有使用XML工作過,正是如此我可能不理解它的vb.net的一面。
該項目的最終目標是創建一個「自動保存」結構,以用於較大的項目。它可以保存在計時器上,也可以保存在文本框中。因此,您可以隨時點擊「清除」按鈕,然後點擊「檢索」按鈕從上次保存的數據中恢復。
我當前的問題是這樣的:「錯誤:'EndElement'是一個無效的XmlNodeType行6,位置3。 檢索數據時發生此錯誤。當我爲錯誤添加快速監視時,它會指向處理數據的任何塊,從保存數據時保留空白的文本框輸入。
以下是上述錯誤出現後產生的xml結果。我已將「郵政編碼」文本框留空。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Saved_Data>
<name>Tony</name>
<color>purple</color>
<number>20</number>
<zipcode />
</Saved_Data>
在此先感謝您的幫助,我期待着學習!
感謝您的答案的優雅!我很欣賞這個例子以及學習支持的方向。就像我之前提到的,我一直在使用vb.net一段時間,但在合併外部程序和/或語言方面,我仍然是新手。我會投這個答案,但我缺乏這個能力...... :-( – Cody 2014-10-20 18:00:38
@Cody:不客氣!應該能夠在15聲望上升,並且你快到了!:)你仍然可以接受我的答案,如果你喜歡它。 – Neolisk 2014-10-20 18:25:31