【发布时间】:2014-10-20 13:38:39
【问题描述】:
我开始这是一个自学练习,现在我很难过。如果有人能帮助我学习,我将不胜感激,通过引导我完成我的待解释练习和必要的内容。
我编写了一个非常基本的 Visual Basic 应用程序,其功能如下:
- 接受通过文本框输入的文本
- 保存按钮将信息存储在 xml 文件中
- 清除按钮从文本框中删除信息
- Retrieve 按钮从 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>
提前感谢您的帮助,我期待学习这个!
【问题讨论】: