Solved

VB.NET routines to parse XML data from NOAA

Posted on 2013-12-04
10
679 Views
Last Modified: 2013-12-12
Can someone please tell me how I can parse this data. I need to save it to a database but I just need the values but I am having difficulty. I am doing this in VB.NET and I need to be able to parse it through VB.NET.  I have attached the XML file I need to parse....

PLEASE HELP ME!!!
Weather.xml
0
Comment
Question by:jknj72
10 Comments
 
LVL 11

Expert Comment

by:MajorBigDeal
ID: 39696625
Which version of .Net are you using?  The best approach for parsing XML is different depending on what features you have available to you.
0
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 39696638
Hi jknj72;

Exactly which nodes and values do you wish to parse from the XML document you have uploaded? Please be specific, thank you.
0
 
LVL 18

Expert Comment

by:UnifiedIS
ID: 39696675
You can use a dataset and its readxml method
Dim ds As New DataSet
ds.ReadXml

the dataset will create tables that you can review to determine the column names/indices that you need to grab.

There are going to be lots of different ways to consume XML so the best choice will be highly dependent on your scenario.
0
How our DevOps Teams Maximize Uptime

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us. Read the use case whitepaper.

 

Author Comment

by:jknj72
ID: 39696679
I am using VB.NET 2010

I am looking to get pretty much everything below the </head> but I really dont need the location since I have those values saved.
What I REALLY need is the time-layouts with the applicable key values and descriptions and ALL the parameter values.
If you have ANY other questions I will keep checking in and I will answer anything you need(if I can of course) ;)

THANK YOU SO MUCH FOR YOUR HELP!!!
0
 

Author Comment

by:jknj72
ID: 39696680
fyi, I am doing this in a VB.NET Console app to be scheduled to run periodically throughout the day
0
 

Author Comment

by:jknj72
ID: 39698498
Any thoughts???
0
 
LVL 11

Expert Comment

by:MajorBigDeal
ID: 39699412
Something like this would work:

XmlDocument xmlDoc= new XmlDocument();
xmlDoc.Load("Weather.xml");
XmlNodeList timeLayouts = xmlDoc.GetElementsByTagName("time-layout");
0
 
LVL 11

Expert Comment

by:MajorBigDeal
ID: 39699476
Sorry, I just realized that you are using VB, but your code should be very similar with some minor syntax differences.  The Class names will be the exact same.    

The XmlNodeList above is a list of XmlNodes.  Each XmlNode has a Name property that tells you which element it is. There is an Attributes property that contains zero or more XmlAttribute object.  Each XmlAttribute object has a name and a value.  The XmlNode object also has the ChildNodes property which contains the children which are also XmlNode objects.  

This approach is very solid although it does require coding to match the document.  As previously mentioned there are many different ways to do this depending on your situation but this is one tried-and-true way to do it.      

In my experience, the easiest way to code this approach is to have a separate method for each element name.  The method would accept an XmlNode object.  Each method would have 2 Select Case statements:  one inside an attribute loop and another inside a child node loop.  Inside the child node loop the select case would call the appropriate method based on the node name, passing in the current XmlNode object.

If you try this and run into trouble, just post back with the specific problem you are having.
0
 
LVL 11

Accepted Solution

by:
MajorBigDeal earned 500 total points
ID: 39699519
I should also mention that the text inside an element is also considered a child node.  So inside the child node loop you check the class of the node.  If the XmlNode is an object of XmlElement class then it is a regular child node, otherwise it represents the text of the element and you can use the Value property to get that text.  

So for example, looking at the following element:  

<start-valid-time period-name="Tonight">2013-12-03T18:00:00-06:00</start-valid-time>

You would have a method to process any XmlNode that has a name of "start-valid-time".  Inside that method, you would loop over the attributes and pick out value of the "period-name" which in this case would be "Tonight".  In the same method you would loop over the child nodes.  In this case there would only be one child node and it has a value of "2013-12-03T18:00:00-06:00".
0
 

Author Closing Comment

by:jknj72
ID: 39715118
thanks
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

829 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