我喜欢用的新东西,虽然LINQ出来很久了,一直没有机会用一下,这次有个东西正好可以小试一下,部分代码来自MSDN
http://msdn.microsoft.com/zh-cn/library/bb387098.aspx
总览介绍编写 LINQ to XML 应用程序的两种主要方法。 | |
提供 LINQ to XML 类的概述。 | |
介绍 XElement 类,该类表示 XML 元素。XElement 是 LINQ to XML 类层次结构中的基础类之一。 | |
介绍 XAttribute 类,该类表示 XML 属性。 | |
介绍 XDocument 类,该类表示 XML 文档。 |
<
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
>
1 示例循环访问 purchaseOrder 元素的子元素。
XElement po = XElement.Load("PurchaseOrder.xml" ); IEnumerable<XElement> childElements = from el in po.Elements() select el;
foreach (XElement el in childElements) Console.WriteLine("Name: " + el.Name);
2
XElement po = XElement.Load("PurchaseOrder.xml" ); IEnumerable<XElement> items = from el in po.Descendants("ProductName" ) select el;
foreach (XElement prdName in items) Console.WriteLine(prdName.Name + ":" + (string ) prdName);
3 查询操作
IEnumerable<string > partNos =
from item in purchaseOrder.Descendants("Item" )
IEnumerable<XElement> partNos =
from item in purchaseOrder.Descendants("Item" )
where (int ) item.Element("Quantity" ) *
(decimal) item.Element("USPrice" ) > 100
orderby (string )item.Element("PartNumber" )
select item;
select (string ) item.Attribute("PartNumber" );