0

所以我在这里得到了我的 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.... 所以这只是我理解代码,所以我可以进入那部分。感谢所有可以帮助我的人。

4

2 回答 2

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 
于 2013-10-27T19:03:11.950 回答
1

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

Public Class Person
   Public Name As String
   Public Tel As String
   Public EMail As String
End Class
于 2013-10-27T19:00:39.667 回答