没有从 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.Net 足以在 VB 中编写我的代码)
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