此代码示范了如何使用LINQ to XML将XML文档加载到内存中,并且如何通过XDocument.Descendants()对象方法按着顺序获取指定名称的所有子元素,以及如何通过XElement.Attribute()方法来获取指定名称的元素属性,进而访问属性值。
下面的示例代码首先使用XDocument.Load()方法将文件中的XML加载到内存中,然后通过调用XDocument.Descendants()方法检索出元素名为Item的所有子元素,接着使用LINQ to XML查询这个返回结果集中每一个元素,获取元素的PartNumber属性,最后将其打印到控制台上。
所用到的XML文档如下:
<?xml version="1.0"?> <PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20"> <Address Type="Shipping"> <Name>Ellen Adams</Name> <Street>123 Maple Street</Street> <City>Mill Valley</City> <State>CA</State> <Zip>10999</Zip> <Country>USA</Country> </Address> <Address Type="Billing"> <Name>Tai Yee</Name> <Street>8 Oak Avenue</Street> <City>Old Town</City> <State>PA</State> <Zip>95819</Zip> <Country>USA</Country> </Address> <DeliveryNotes>Please leave packages in shed by driveway.</DeliveryNotes> <Items> <Item PartNumber="872-AA"> <ProductName>Lawnmower</ProductName> <Quantity>1</Quantity> <USPrice>148.95</USPrice> <Comment>Confirm this is electric</Comment> </Item> <Item PartNumber="926-AA"> <ProductName>Baby Monitor</ProductName> <Quantity>2</Quantity> <USPrice>39.98</USPrice> <ShipDate>1999-05-21</ShipDate> </Item> </Items> </PurchaseOrder>
示例代码:
static void Main(string[] args) { XDocument PurchaseOrderDocument = XDocument.Load(@"C:/LINQ/PurchaseOrder.xml"); IEnumerable<XElement> ItemElements = PurchaseOrderDocument.Descendants ("Item"); IEnumerable<string> PartNumbers = from Item in ItemElements select Item.Attribute ("PartNumber").ToString(); foreach (string PartNumber in PartNumbers) { Console.WriteLine(PartNumber); } }