我基本上是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
希望这有用.如果您想了解更多信息,请询问:-)
睡前很难写出连贯的东西!