Marc tiene razón, VB te permite hacer muchas cosas buenas. Soy un chico C#, pero acabo de derribar una solución VB para ver cómo hacerlo por ti. Publiqué el código a continuación y le expliqué las partes clave. ¡Estaba muy impresionado con las características que VB tiene para Xml!
Veo en el ejemplo del código que ya ha logrado cargar su Xml en un XDocument. Una vez que haya hecho su XDocument.Load, puede acceder al documento Xml usando alguna sintaxis especial.
Para empezar, queremos obtener todos los productos del documento; es decir, todos los elementos del producto <. Tenemos que hacer lo siguiente:
Dim products = productsDoc...<Product>
Esto dice que desea que todos los productos> < elementos del documento. Esto nos da una colección IEnumerable de XElements.
Una vez que hemos sacado un producto individual de la colección, queremos acceder a los valores del producto, como su nombre o precio. Para hacer eso tenemos que hacer lo siguiente:
' this gets the value of the price element within a product
product.<Price>.Value
Aquí hay un ejemplo completo junto con la salida esperada para que usted mire:
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
La salida del programa es:
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
Espero que esto haya sido útil. Si desea obtener más información, solo pregunte :-)
¡Es difícil escribir algo coherente antes de acostarse! :-)
En realidad, mots de LINQ es similar entre C# y VB; xml es una de las pocas áreas en las que existe una diferencia, y es VB la que agrega cosas, no C# ;-p –
ok ... ¿así que alguna idea de cómo ayudar con este problema? – Jason
Json buscando la ayuda xml ... ¡eso es un poco gracioso! –