2013-02-09 32 views
0

我剛開始我的第一個編程項目的一個Visual Studio 2010中閱讀在Visual Studio中的XML文件的隨機行2010

我有我已經加入到該計劃作爲項目的XML文件。它具有以下結構:

<lexeme><grapheme>Aalesund</grapheme> <phoneme>'A:lI2s,Vnd</phoneme></lexeme> 

有40萬項這樣的,我想這樣做是按下一個按鈕都隨機語義從XML文件中選擇和填充,然後兩個標籤與相應的字形和音素。

任何人都可以點我正確的方向開始請?我發現的教程是加載特定數量的數據,不只是一個隨機行,並引用外部XML文件的位置,而不是一個在項目內部的位置。

在此先感謝。

編輯:我應該說我的意思是僞隨機數。我希望能找到一個rand()函數,但似乎無法做到?

+0

淨[隨機](http://msdn.microsoft.com/en-us/library/system.random.aspx)班在MSDN上 – psubsee2003 2013-02-09 20:09:22

+0

如果你在谷歌搜索中尋找vb.net中的僞隨機數,第一個結果就是這個[VB.Net中的隨機詮釋](http://stackoverflow.com/questions/18676/random-int -in-VB網)。你檢查過了嗎? – Neolisk 2013-02-09 21:24:00

回答

1

沒有從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>元素。

如果您這樣做,請記住,.net Random類是僞隨機的,並將當前時間戳用作種子。如果要定期訪問對象,建議將var random = new Random()變量設置爲類級字段並創建一次,只需使用Next()方法獲取下一個數字,而不是在需要時創建新的對象一個隨機數。

下面是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 
+0

+1提到事實是,在處理XML文件時,讀取第#行沒有意義。 – Neolisk 2013-02-09 21:22:45

+0

謝謝psubsee。我將xml文件作爲解決方案資源管理器中的一個項目加載,但是當我嘗試將該文件作爲項目中的新數據源添加時,則無法鏈接它。 – Andy 2013-02-10 10:59:57

+0

@因此,您希望將XML嵌入到應用程序中,並在啓動應用程序時加載它? – psubsee2003 2013-02-10 11:04:21