2014-12-04 2 views
-1
내가 URL로 갈 때 vb.net

vb.net - 읽기 XML 웹 응답

에 응답 웹 페이지에서 일부 값을 읽을 필요가

= 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-4 내가

를 사용하여 어떤 해상도 알 - 1 내가 함수 날짜 (3008)에 있는지 알 - 0 난 함수가 회전 오프 (3004)임을 알 수

기타

어떻게 할 수 있습니까?

+0

무엇을 시도 했습니까? 어떤 부분에 도움이 필요합니까? 웹 요청을 작성하고 XML을 파싱합니다. – Mark

+0

둘 다 말할 수 있습니다. Webbrowser.navigate (URL)를 사용하여 웹 요청을 작성 했으므로 최선의 방법은 아닙니다./ – Requies

+0

URL에서 데이터를 가져 와서 Cmd 및 상태 정보로 구문 분석하고 싶습니까? ? 즉, 웹 브라우저 컨트롤이 정말로 필요합니까, 아니면 웹 서버에서 데이터를 다운로드하기위한 첫 시도입니까? XML 문자열을 데이터로만 사용하려면 ['WebClient.DownloadString'] (http://msdn.microsoft.com/en-us/library/fhd1f0sw%28v=1.0%29.aspx)과 같은 것이 좋습니다. 옵션을 사용하면 [LINQ to XML] (http://msdn.microsoft.com/en-us/library/bb387098.aspx)을 사용하여 XML을 구문 분석 할 수 있습니다. – Mark

답변

0

시작하기위한 몇 가지 지침. 서버에서 XML을 문자열로 다운로드 한 다음 LINQ to XML을 사용하여이를 익명 형식의 목록으로 구문 분석하는 방법을 보여줍니다. 적절한 수입과 옵션을 찾아야합니다 (Option Infer On이 필요할 것입니다). 동일한 DownloadString 메서드를 사용하여 다른 GET 요청을 서버에 보낼 수 있습니다. 블로킹을 피하기 위해 UI의 일종 인 경우 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 id와 cmd id를 바꿔 넣는 것처럼) 도움 마크를 보내 주셔서 감사합니다 !!!;) – Requies