此代码示范了如何使用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);
}
}