如何使用我的vb 2010脚本读取此Xml文件

时间:2013-10-27 17:51:08

标签: xml vb.net

所以我在这里得到了我的xml文件。 该文件名为MyName.xml

<?xml version="1.0" encoding="utf-8"?>
<!--XML Database.-->
<Data>
  <Person>
    <Name>ggg</Name>
    <Email>erty</Email>
    <Tel>567890-</Tel>
  </Person>
  <Person>
    <Name>hank</Name>
    <Email>3456</Email>
    <Tel>234567890-</Tel>
  </Person>
</Data>

我不知道如何让这个函数读取这个xml文件。我觉得我很接近这一点。我复制了书中的代码,然后我更改了一些部分。我只是不知道如何让它改变我使用它。我对这里的一些东西也非常困惑。我留下了评论。但我想知道我错过了什么错误,以保持弹出。

错误 - 未定义“人物”类型。 (第8,10,20行)

对于拥有相同书籍的任何人(murach的Visual Basic 2010),我更改之前的原始代码在第713页

本书中的原始代码使用了包含4个条目的xml文件。每个都有3个部分,很像我的。

Imports System.Xml
Imports System.IO

Public Class Form2

    Private Const path As String = "MyName.xml" 'it is in the bin folder.'

    Public Shared Function GetPerson() As List(Of Person) 'what does this do? (Of Person) Am i missing something?'

        Dim people As New List(Of Person) 'Here it is again. What do i do to fix this partpart'

        Dim settings As New XmlReaderSettings
        settings.IgnoreComments = True
        settings.IgnoreWhitespace = True

        Dim xmlIn As XmlReader = XmlReader.Create(path, settings)

        If xmlIn.ReadToDescendant("Person") Then
            Do
                Dim person As New Person
                person.Name = xmlIn("Name")
                xmlIn.ReadStartElement("Person")
                person.Email = xmlIn.ReadElementContentAsString
                person.Tel = xmlIn.ReadElementContentAsString     'to make life simple for testing this, for now.'
                people.Add(person)
            Loop While xmlIn.ReadToNextSibling("Person")
        End If

        xmlIn.Close()
        Return people

    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'I will end up puting code here to do something later. Just trying stuff right now.' 


    End Sub

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


    End Sub
End Class

任何帮助都会很好。我知道有一种更好的方式,甚至可能更容易,但我需要通过我正在上课。所以我得到的只是这个代码和一本非常大的书。稍后对于实际的分配我必须将它添加到vb中的数组然后搜索它并且bla bla bal ....所以这只是我理解代码所以我可以到达那一部分。感谢任何可以帮助我的东西。

2 个答案:

答案 0 :(得分:1)

您缺少的是type“人” - 代码需要工作。 一个简单的实现可能如下所示:

Public Class Person
   Public Name As String
   Public Tel As String
   Public EMail As String
End Class

答案 1 :(得分:1)

Public Shared Function GetPerson() As List(Of Person) 'what does this do? (Of Person) Am i missing something?'

List(Of Person)声明了Person类型的通用列表。这将是Person个对象的集合。

错误消息“类型Person未定义”告诉您程序无法找到Person的定义 - 很可能是因为您尚未定义类。你需要这样的东西(基于你发布的代码):

Public Class Person

    Public Property Name As String
    Public Property Email As String
    Public Property Tel As String
End Person