Hey Jason,
Marc is right, VB lets you do lots of nice stuff. I'm a C# guy myself, but I just knocked up a VB solution to see how to do it for you. I've posted the code below and explained the key parts. I was very impressed with the features VB has for Xml!
I see in your code sample that you've already managed to load your Xml into an XDocument. Once you've done your XDocument.Load you can access the Xml document using some special syntax.
For starters we want to get all the products from the document; i.e. all < Product > elements. We need to do the following:
Dim products = productsDoc...<Product>
This says that you want all < Product > elements from the document. This gives us an IEnumerable collection of XElements.
Once we've pulled an individual product from the collection we'll want to access the product's values like it's name or price. To do that we need to do the following:
' this gets the value of the price element within a product
product.<Price>.Value
Here's a full example along with the expected output for you to look at:
Module Module1
' some products xml to use for this example
Dim productsXml = <Xml>
<Product>
<Name>Mountain Bike</Name>
<Price>59.99</Price>
</Product>
<Product>
<Name>Arsenal Football</Name>
<Price>9.99</Price>
</Product>
<Product>
<Name>Formula One Cap</Name>
<Price>14.99</Price>
</Product>
<Product>
<Name>Robin Hood Bow</Name>
<Price>8.99</Price>
</Product>
</Xml>
Sub Main()
' load the xml into an XDocument
' NOTE: this line isn't needed when using inline XML as per this example,
' but I wanted to make this code easy to modify for reading in text files
Dim productsDoc = System.Xml.Linq.XDocument.Parse(productsXml.ToString())
' get all <Product> elements from the XDocument
Dim products = From product In productsDoc...<Product> _
Select product
' go through each product
For Each product In products
' output the value of the <Name> element within product
Console.WriteLine("Product name is {0}", product.<Name>.Value)
' output the value of the <Price> element within product
Console.WriteLine("Product price is {0}", product.<Price>.Value)
Next
End Sub
End Module
Program output is:
Product name is Mountain Bike
Product price is 59.99
Product name is Arsenal Football
Product price is 9.99
Product name is Formula One Cap
Product price is 14.99
Product name is Robin Hood Bow
Product price is 8.99
I hope this has been helpful. If you'd like any more information please just ask :-)
It's hard to write something coherent at bedtime! :-)