0

わかりましたので、vb 2010 でたくさんの助けを借りました。親切に教えていただければ、もう少し皆さんからの助けが必要です。

ここにxmlファイルがあります

<?xml version="1.0" encoding="utf-8"?>
<!--XML Database.-->
<Data>
  <Person>
    <Name>hi</Name>
    <Email>222</Email>
    <Tel>2345</Tel>
  </Person>
  <Person>
    <Name>hank</Name>
    <Email>222</Email>
    <Tel>2345</Tel>
  </Person>
</Data>

そして、名前、電子メール、および電話番号を 3 つの別々の配列に入れたいと考えています。わかったと思います。しかし、なぜ今は機能していないのでしょうか。ここで壊れているもの。

Imports System.Xml
Imports System.IO

Public Class Form2
    Dim array() As String
    Dim testname As String
    Dim namearray(1) As String
    Dim emailarray(1) As String
    Dim telarray(1) As String

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

    Public Sub GetPerson()

        Dim x As Integer = 0
        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
                xmlIn.ReadStartElement("Person")
                namearray(x) = xmlIn("Name")
                emailarray(x) = xmlIn("Email")
                telarray(x) = xmlIn("Tel")
                x = x + 1
            Loop While xmlIn.ReadToNextSibling("Person")
        End If


        xmlIn.Close()


    End Sub

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

        GetPerson()
        Search.Text = namearray(0)

    End Sub

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



    End Sub
End Class
4

1 に答える 1

0

この本はおそらくこれ以上のことを規定していますが、以前に学んだことから、関連する Person クラスがあるようです:

Friend Class Person
    Friend Name as String = ""
    Friend EMail As String =""
    Friend Phone as String = ""
End Class

Friend People As List(of Person)

XML の読み取り。ループの中:

  ' I dont like instance names the same as Type names:
  Dim p As New Person
  xmlIn.ReadStartElement("Person")
  P.Name=xmlIn("Name")
  P.EMail = xmlIn("Email")
  P.Phone = xmlIn("Tel")

  ' Person now holds all the data for a this person.
  ' add him/her to the list:
  People.Add(p)

  ...
  n = 1
  For n as integer = 0 to People.Count-1
      console.WriteLine("Person #{0} is named {1)",n, People(n).Name)
  next n

半紛らわしい構造 (Of..) に惑わされないでください。このOf節で行うことは、このリストに何を入れるかを指定することだけです。.NET には、目の前の仕事に応じて Dictionary や ArrayList など、他にも多くの便利なコレクション型があります。

リストの価値は、ロードするものの数を知る必要がないことです。さらに、単一のもの (人) に関連するデータを異なる配列に格納するのではなく、クラスはデータを一緒に保つことができます。職業、雇用者、住所、都市、州/県、婚姻状況、性別などを収集する必要があるとしたら、どれだけの配列が必要で、すべてをまとめておくのがどれほど難しいか想像してみてください。

于 2013-10-28T21:10:29.383 に答える