2014-12-04 35 views
-1

我需要當我去到url閱讀vb.netvb.net - 讀取XML的Web響應

從響應網頁中的一些值= 192.168.1.254/?custom=1 & CMD = 3014 我得到這樣的響應:

This XML file does not appear to have any style information associated with it. The document tree is shown below. 
<Function> 
<Cmd>2002</Cmd> 
<Status>0</Status> 
<Cmd>2003</Cmd> 
<Status>0</Status> 
<Cmd>2004</Cmd> 
<Status>0</Status> 
<Cmd>2006</Cmd> 
<Status>0</Status> 
<Cmd>2007</Cmd> 
<Status>1</Status> 
<Cmd>2008</Cmd> 
<Status>0</Status> 
<Cmd>2010</Cmd> 
<Status>3</Status> 
<Cmd>1004</Cmd> 
<Status>0</Status> 
<Cmd>1002</Cmd> 
<Status>4</Status> 
<Cmd>1005</Cmd> 
<Status>0</Status> 
<Cmd>1006</Cmd> 
<Status>1</Status> 
<Cmd>1007</Cmd> 
<Status>0</Status> 
<Cmd>1008</Cmd> 
<Status>0</Status> 
<Cmd>1009</Cmd> 
<Status>0</Status> 
<Cmd>2005</Cmd> 
<Status>6</Status> 
<Cmd>1011</Cmd> 
<Status>0</Status> 
<Cmd>3025</Cmd> 
<Status>0</Status> 
<Cmd>3026</Cmd> 
<Status>1</Status> 
<Cmd>3011</Cmd> 
<Status>1</Status> 
<Cmd>3010</Cmd> 
<Status>1</Status> 
<Cmd>3007</Cmd> 
<Status>0</Status> 
<Cmd>3003</Cmd> 
<Status>1</Status> 
<Cmd>3004</Cmd> 
<Status>1</Status> 
<Cmd>3008</Cmd> 
<Status>0</Status> 
</Function> 

我需要一種方式來獲得的CMD ID和值。所以我可以知道單個功能的狀態。

例:

3003 - 0我就知道該函數是旋轉關閉 3004 - 1我就知道該函數的日期是3008 - 4我就知道什麼分辨率使用

等等等等

我該怎麼做?

+0

你試過了什麼?您需要哪些幫助 - 製作Web請求,解析XML,兩者都需要? – Mark 2014-12-04 14:15:28

+0

我會說兩個。因爲我使用Webbrowser.navigate(URL)發出了我的Web請求,而且我確定不是最好的方式來做到這一點..:/ – Requies 2014-12-04 20:17:14

+0

你只是想從URL中獲取數據來解析Cmd和狀態信息?即您是否真的需要網絡瀏覽器控制,還是僅僅是您第一次嘗試從網絡服務器下載數據?如果您只是想將XML字符串作爲數據,就像['WebClient.DownloadString'](http://msdn.microsoft.com/zh-cn/library/fhd1f0sw%28v=vs.110%29.aspx)一個選項,那麼你可以使用[LINQ to XML](http://msdn.microsoft.com/en-us/library/bb387098.aspx)來解析XML。 – Mark 2014-12-04 20:25:44

回答

0

一些指針讓你開始。這顯示瞭如何將XML從服務器下載爲字符串,然後使用LINQ to XML將其解析爲匿名類型列表。您需要制定適當的進口和選項(可能需要Option Infer On)。您可以使用相同的DownloadString方法向服務器發出其他GET請求。如果這是在某種用戶界面中,您可能想要查看WebClient.DownloadStringTaskAsync,以避免阻塞。

' Download the XML from the server 
Dim wc = New WebClient() 
Dim xmlString As String = wc.DownloadString("http://192.168.1.254/?custom=1&cmd=3014") 

' Parse the XML into something more usable 
Dim xml = XElement.Parse(xmlString) 
Dim cmdStatus = 
    From c In xml...<Cmd> 
    Let s = DirectCast(c.NextNode, XElement) 
    Select Cmd = c.Value, Status = s.Value 

' Dump the value to the console - not sure what you want to do here 
For Each cs In cmdStatus 
    Console.WriteLine("Cmd: {0}, Status: {1}", cs.Cmd, cs.Status) 
Next 
+0

這是工作絕對好!謝謝..(: 現在我只需要弄清楚如何存儲它們,如果應用存儲更改並將所有內容打印在文本框或更可讀的內容上(如使用cmd名稱和東西交換cmd id) 謝謝Mark !!!的幫助!) – Requies 2014-12-04 21:39:59