使用vb.net通过xml练习存储数据

科迪

我从一个自我教学的练习开始,现在我很沮丧。如果有人可以帮助我学习,我将不胜感激,方法是引导我完成我将要解释的练习和必要的内容。

我编写了一个非常基本的可视化基本应用程序,其功能如下:

  • 接受通过文本框输入的文本
  • 保存按钮将信息存储在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方面。

我对该项目的最终目标是创建一个“自动保存”结构,以用于较大的项目。它保存在计时器或AS上的位置,您在文本框中键入。这样您可以随时单击“清除”按钮,然后单击“检索”按钮以从上次保存的数据中恢复。

我当前的问题是:“错误:'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>

在此先感谢您的帮助,我期待着学习!

新石器时代

首先要学习的是保持代码干燥,即-不要重复自己如果您发现您的代码变得无聊,并且几乎无法分辨每个块在做什么,因为它与上一个非常相似-就是这样。停止并重构。如果您愿意花时间在代码上,总有一种方法可以使代码更好。

您可以使用较少的代码行(LINQ-to-XML)完成XML的读取:

Dim xDoc As XDocument = XDocument.Load("saved_data.xml")
With xDoc.Root
  txtName.Text = .Element("name").Value
  txtColor.Text = .Element("color").Value
  txtNumber.Text = .Element("number").Value
  txtZipCode.Text = .Element("zipcode").Value
End With

随着XML结构变得越来越复杂,您采用的方法将成为维护的噩梦。但是,XDocument非常灵活,专门用于处理复杂的情况。使用LINQ-to-XML方法,即使XML层次结构扩展为几个深层嵌套的节点,您也可以使读取过程非常简单。

我将不写XML作为作业。试一下,从上面给出的示例中应该很容易。让我知道您是否需要帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过 vb.net 在 powershell 中使用存储的凭据

来自分类Dev

使用存储过程vb.net显示数据

来自分类Dev

使用VB.net更改存储的参数

来自分类Dev

如何使用VB .net解析XML

来自分类Dev

使用 VB.NET 读取 XML 文件

来自分类Dev

使用scriptblock vb.net刷新数据

来自分类Dev

使用 ASP.NET 通过 Azure 表实时存储数据

来自分类Dev

使用VB脚本解析XML

来自分类Dev

使用VB脚本解析XML

来自分类Dev

vb.net并使用SQLite

来自分类Dev

使用tableadapater vb.net将数据存储到数据库中

来自分类Dev

使用XML存储数据

来自分类Dev

使用 vb6 通过 MSFlexigrid 将 XML 数据导入到 SQL 表

来自分类Dev

VB6使用VB.NET类-它很慢

来自分类Dev

访问10是否使用VB 6或VB.Net

来自分类Dev

在VB.NET中使用OLEDB通过DataGridView更新Access数据库

来自分类Dev

如何使用vb.net通过数据属性检索表单过帐的值?

来自分类Dev

使用onClick提交按钮通过vb.net表单将数据发布到SQL表

来自分类Dev

使用VB.NET执行存储过程(更新表)

来自分类Dev

使用 vb.net 中的存储过程更新表

来自分类Dev

在VB.NET中使用JSON.NET组织数据

来自分类Dev

使用VB.NET通过USB连接到SQL Server

来自分类Dev

通过对象的属性 Vb.Net 使用 Linq 顺序

来自分类Dev

如何获得<?使用vb.net从xml标记

来自分类Dev

如何在vb.net中使用XML节点的if条件

来自分类Dev

可以将其缩短吗(使用VB.NET的LINQ to XML)?

来自分类Dev

使用VB.NET从XML文件中删除特定元素

来自分类Dev

如何使用vb.net添加xml文件头

来自分类Dev

使用VB.NET更新XML标签值