Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Extract data from xml in vb.net

Posted on 2013-06-06
5
Medium Priority
?
502 Views
Last Modified: 2013-08-21
I am new to working with XML and need some help understanding how to cycle through an XML file and extract the data that I need in visual studio . net.  Below is XML containing geocode data that I need to extract.  In this case I need to extract the latitude an longitude tags <lat>33.7713652</lat> <lng>-84.3719365</lng> into variables Lat and Lng.

Thanks in advance for your help.

Here is the xml data:


<?xml version="1.0" encoding="UTF-8"?>
-<GeocodeResponse> <status>OK</status> -<result> <type>street_address</type> <formatted_address>460 North Avenue Northeast, Atlanta, GA 30308, USA</formatted_address> -<address_component> <long_name>460</long_name> <short_name>460</short_name> <type>street_number</type> </address_component> -<address_component> <long_name>North Avenue Northeast</long_name> <short_name>North Avenue NE</short_name> <type>route</type> </address_component> -<address_component> <long_name>Old Fourth Ward</long_name> <short_name>Old Fourth Ward</short_name> <type>neighborhood</type> <type>political</type> </address_component> -<address_component> <long_name>Atlanta</long_name> <short_name>Atlanta</short_name> <type>locality</type> <type>political</type> </address_component> -<address_component> <long_name>Atlanta</long_name> <short_name>Atlanta</short_name> <type>administrative_area_level_3</type> <type>political</type> </address_component> -<address_component> <long_name>Fulton</long_name> <short_name>Fulton</short_name> <type>administrative_area_level_2</type> <type>political</type> </address_component> -<address_component> <long_name>Georgia</long_name> <short_name>GA</short_name> <type>administrative_area_level_1</type> <type>political</type> </address_component> -<address_component> <long_name>United States</long_name> <short_name>US</short_name> <type>country</type> <type>political</type> </address_component> -<address_component> <long_name>30308</long_name> <short_name>30308</short_name> <type>postal_code</type> </address_component> -<geometry> -<location> <lat>33.7713652</lat> <lng>-84.3719365</lng> </location> <location_type>ROOFTOP</location_type> -<viewport> -<southwest> <lat>33.7700162</lat> <lng>-84.3732855</lng> </southwest> -<northeast> <lat>33.7727142</lat> <lng>-84.3705875</lng> </northeast> </viewport> </geometry> </result> -<result> <type>street_address</type> <formatted_address>460 North Road, Douglas, NE 68344, USA</formatted_address> -<address_component> <long_name>460</long_name> <short_name>460</short_name> <type>street_number</type> </address_component> -<address_component> <long_name>North Road</long_name> <short_name>N Rd</short_name> <type>route</type> </address_component> -<address_component> <long_name>Douglas</long_name> <short_name>Douglas</short_name> <type>locality</type> <type>political</type> </address_component> -<address_component> <long_name>Hendricks</long_name> <short_name>Hendricks</short_name> <type>administrative_area_level_3</type> <type>political</type> </address_component> -<address_component> <long_name>Otoe</long_name> <short_name>Otoe</short_name> <type>administrative_area_level_2</type> <type>political</type> </address_component> -<address_component> <long_name>Nebraska</long_name> <short_name>NE</short_name> <type>administrative_area_level_1</type> <type>political</type> </address_component> -<address_component> <long_name>United States</long_name> <short_name>US</short_name> <type>country</type> <type>political</type> </address_component> -<address_component> <long_name>68344</long_name> <short_name>68344</short_name> <type>postal_code</type> </address_component> -<geometry> -<location> <lat>40.5918115</lat> <lng>-96.4191915</lng> </location> <location_type>RANGE_INTERPOLATED</location_type> -<viewport> -<southwest> <lat>40.5904695</lat> <lng>-96.4205405</lng> </southwest> -<northeast> <lat>40.5931675</lat> <lng>-96.4178426</lng> </northeast> </viewport> -<bounds> -<southwest> <lat>40.5918115</lat> <lng>-96.4191916</lng> </southwest> -<northeast> <lat>40.5918255</lat> <lng>-96.4191915</lng> </northeast> </bounds> </geometry> <partial_match>true</partial_match> </result>
0
Comment
Question by:toddpotter
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
5 Comments
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 39227206
I see multiple <lat> and <lng> nodes in that sample. So which ones do you need?
0
 

Author Comment

by:toddpotter
ID: 39227225
Multiple get returned so I would go with the 1st occurance.
0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 39227240
OK, but there are multiple parents. Do you need the long/lat that is within the <location> node, the <southeast> node, the <southwest> node, etc., etc.
0
 

Author Comment

by:toddpotter
ID: 39227271
Sorry.  For now, the long/lat within the <location> would be sufficient.
0
 
LVL 14

Accepted Solution

by:
frankhelk earned 1500 total points
ID: 39314681
Hmmm - if I copy/paste the code into a file and open it with IE or Firefox (both present XML in nice, readable form) they tell me that the data is not well formed.

That way standard procedures which are built in into the .NET runtime will fail on it.

Nonetheless, here's some code you might use as inspiration. I've stripped down some of my more complicated code, but I havn't tested that afterwards. So this is more a guideline than a working example. The classes involved have much more bells and whistles, so I recommend to have a look at the VS help for 'em.

The VB.NET example (built some years ago with VS2005) fetches some XML text out of a HTTP server and extracts some data. The result is returned as string, with all fetched items sparated by semicolons. But be aware that these classes need well formed xml to work with.

Imports System
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Xml

    Public Function GetSthFromXML(ByVal node As String) As String
        Dim xmlDoc As XmlDocument
        Dim xmlnode As XmlNode
        Dim xmlnodeList As XmlNodeList

        Dim url As String
        Dim Response As String
        Dim dWeb As New WebClient

        GetSthFromXML = ""

        xmlDoc = New XmlDocument

        If node <> "" Then

            url = "http://" & node & "/someurl"

            With dWeb
                .Headers = New Net.WebHeaderCollection
                .Encoding = Encoding.Default
                .CachePolicy = New Cache.RequestCachePolicy(Cache.RequestCacheLevel.NoCacheNoStore)
            End With

            Try
                Response = dWeb.DownloadString(url)
            Catch ex As Exception
                'Eror - empty response
                Return ""
            End Try

            xmlDoc.LoadXml(Response)
        Else
            Throw New System.Exception("GetSthFromXML needs a node name")
        End If

        xmlnodeList = xmlDoc.SelectNodes("//NodeType")

        For Each xmlnode In xmlnodeList
            If GetSthFromXML.Length > 0 Then GetSthFromXML = GetSthFromXML & ";"
            GetSthFromXML = GetSthFromXML & xmlnode.SelectSingleNode("InnerNode").InnerText 
        Next

    End Function

Open in new window

0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
Creating an analog clock UserControl seems fairly straight forward.  It is, after all, essentially just a circle with several lines in it!  Two common approaches for rendering an analog clock typically involve either manually calculating points with…
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …
How to fix incompatible JVM issue while installing Eclipse While installing Eclipse in windows, got one error like above and unable to proceed with the installation. This video describes how to successfully install Eclipse. How to solve incompa…

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question