Solved

VB.NET routines to parse XML data from NOAA

Posted on 2013-12-04
10
653 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 62

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
 

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
What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

 

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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Introduction This article shows how to use the open source plupload control to upload multiple images. The images are resized on the client side before uploading and the upload is done in chunks. Background I had to provide a way for user…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

708 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

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now