2014-12-04 72 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