XMLからランダムな行を取得する直接的な方法はありません。また、XMLの形式が次のように変更された場合、行番号に依存することは危険です。
<lexeme><grapheme>Aalesund</grapheme> <phoneme>'A:lI2s,Vnd</phoneme></lexeme>
に:
<lexeme>
<grapheme>Aalesund</grapheme>
<phoneme>'A:lI2s,Vnd</phoneme>
</lexeme>
ランダムに生成された行番号は、<lexeme>
要素と一致しなくなる可能性があります。
それを行うための最良の方法は、リスト内のすべての<lexeme>
要素を取得し、リストの範囲内にある番号をランダムに生成することだと思います:(
許してください、しかしコードサンプルはc#にあります、私は私を信用していませんVBでコードを書くのに十分なVB.Net)
var lexemeList = xDocument.Descendants("lexeme").ToList();
var random = new Random();
var randomLexeme = lexemeList[random.Next(0, lexemeList.Count-1)];
randomLexme
次に、疑似ランダム要素があり、適切な要素<lexeme>
を取得する必要があるときにそれを解析できます。<grapheme>
<phoneme>
ただし、これを行う場合は、.netRandom
クラスが疑似ランダムであり、現在のタイムスタンプをシードとして使用することに注意してください。オブジェクトに定期的にアクセスする場合は、var random = new Random()
変数をクラスレベルのフィールドとして作成し、一度作成して、乱数が必要なときにNext()
新しいオブジェクトを作成するのではなく、メソッドを使用して次の番号を取得することをお勧めします。 Random()
。
VB.Netのより自己完結型の関数は次のとおりです。
Dim rand = New Random()
Dim myXml = New XDocument()
Function GetRandomLexeme() as XElement
Dim lexemeList = myXml.Descendants("lexeme").ToList()
Dim randomLexeme = lexemeList(rand .Next(0, lexemeList.Count - 1))
GetRandomLexeme = randomLexeme
End Function