現在、次のコードを使用して、大きな Xml ファイルを XTable にロードしています。
Private Sub Button5_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
TextBox4.Visible = False
Dim asm = Assembly.GetExecutingAssembly()
Dim var = asm.GetManifestResourceStream("WindowsApplication2.british-english-dictionary.xml")
Dim rand = New Random()
Dim myXml = XDocument.Load(var)
var.Close()
Dim lexemeList = myXml.Descendants("lexeme").ToList()
Dim randomLexeme = lexemeList(rand.Next(0, lexemeList.Count - 1))
TextBox2.Text = randomLexeme.Descendants("grapheme").Value
End Sub
ただし、xml は非常に長い (400,000 エントリ) ため、ボタンを押すのに少し時間がかかります。試して最小化するにDim myXml = XDocument.Load(var)
は、ボタンを押すたびにではなく、XDocument への Xml ファイルの読み込みがプログラムを開くときにのみ行われるように、ボタンを押したくないです。
私はこれをやってみました:
Imports System.IO
Imports System
Imports System.Reflection
Imports System.Xml
Imports System.Security.Permissions
Public Class Form1
Public asm = Assembly.GetExecutingAssembly()
Public var = asm.GetManifestResourceStream("WindowsApplication2.british-english-dictionary.xml")
Public rand = New Random()
Public myXml = XDocument.Load(var)
Private Sub Button5_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
TextBox4.Visible = False
Dim lexemeList = myXml.Descendants("lexeme").ToList()
Dim randomLexeme = lexemeList(rand.Next(0, lexemeList.Count - 1))
TextBox2.Text = randomLexeme.Descendants("grapheme").Value
End Sub
End Class
しかし、ボタン クリック イベントが発生するとエラーが発生します。
タイプ 'd__a' のパブリック メンバー 'ToList' が見つかりません。