2011-07-21 39 views
2

所以我在Visual Basic 2010中創建了一個程序,它將通過大約120萬個來自互聯網的XML文件。每個文件的URL是在以下格式:如何在Visual Basic .NET中從Internet讀取XML?

website.com/xmlfeed.action?number=VARIABLE

其中「VARIABLE」是1和120萬之間的數字。獲得文檔後,我需要從XML獲得一個特定的值。文檔樹的相關部分採用以下格式:

<XMLResponce> 
<SectionA> 
    <SectionB> 
    <Value> 250 </Value> 
    </SectionB> 
</SectionA> 
</XMLResponce> 

其中需要提取的數據位於「值」中。

我今天花了一段時間在網上搜索,但空手而來。我發現的所有內容都是無關緊要的,或者FAR太複雜,以至於我無法理解。我認爲問題在於我不熟悉與XML相關的術語。

我真的很感謝一個易於理解的解決方案或鏈接到一個易於理解的解決方案。如果它不是太麻煩,請解釋它是如何工作的,因爲我試圖學習。

+2

Google「linq to xml」 –

回答

2

要下載該文件的副本,您可以使用HttpWebRequest。您可以在基於增量Integer生成URL的循環中將調用置於GetResponse(或BeginGetResponse,如果您希望它們是異步的)。

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx

解析文件有很多的選擇,但LINQ到XML是一個很不錯的選擇。

http://msdn.microsoft.com/en-us/library/bb387098.aspx

Dim requestPrefix = "website.com/xmlfeed.action?number=" 

For documentNumber = 1 To 1200000 
    Dim request = WebRequest.Create(requestPrefix & documentNumber) 
    request.Timeout = 5000 
    Dim response = request.GetResponse() 

    Using stream = response.GetResponseStream() 
     Dim xDocument = XDocument.Load(stream) 

     'Use Linq to Xml to get the value you are after from the XDocument. 
    End Using 
Next 
+0

對不起,我還是完全迷路了。 – Josh

+0

你有多遠。你能下載文件嗎? –

+0

只需要清楚:我不需要將它們下載到本地存儲中,只需獲取值即可。 – Josh

1

的LINQ to XML在VB使這相當痛苦。以下是沒有經過測試,所以因人而異:

Dim values = From index in Enumerable.Range(1, 2100000) 
      From doc in XDocument.Load(New Uri("http://website.com/xmlfeed.action?number=" & index)) 
      Select value in doc...<Value>.FirstOrDefault() 

這會給你一個IEnumerable在每個XML的第一個值節點。根據XML的大小,您可能需要更改此方法,因爲XDocument.Load會在處理之前將整個xml文檔加載到內存中。

+0

@Josh:他剛給你答案。 –