我基本上是LINQ的新手.我在这里看了很多,我很困惑.我已经看过一些允许我使用LINQ的强类型对象的例子,但是我不太了解它们,因为它们在C#中,我想让你用LINQ做不同的事情(我想?).
无论如何,这就是我想要做的:
Dim productXML As XDocument = XDocument.Load( _ Server.MapPath("~/App_Data/products.xml")) Dim products As List(Of Product) = 'some query to select all products ?' 'set up Product properties here' someProduct.ProductID = 'somehow get productid from XML'
编辑 – 我只想获取XML文档中所有产品的列表,并将它们放入泛型列表中.
Marc是对的,VB可以让你做很多好事.我自己就是C#家伙,但我刚刚敲了VB解决方案,看看如何为你做这件事.我已经发布了下面的代码并解释了关键部分. VB对Xml的功能给我留下了深刻的印象!
我在您的代码示例中看到您已经设法将Xml加载到XDocument中.完成XDocument.Load后,您可以使用一些特殊语法访问Xml文档.
对于初学者,我们希望从文档中获取所有产品;即全部<产品>元素.我们需要做以下事情:
Dim products = productsDoc...<Product>
这表示你想要所有<产品>文件中的元素.这为我们提供了一个IEnumerable XElements集合.
一旦我们从集合中提取单个产品,我们就会想要访问产品的价值,例如它的名称或价格.为此,我们需要执行以下操作:
' this gets the value of the price element within a product product.<Price>.Value
这是一个完整的示例以及您要查看的预期输出:
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
程序输出是:
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
希望这有用.如果您想了解更多信息,请询问:-)
睡前很难写出连贯的东西!