边学边用LINQ(一)___LINQ TO xml

  原来用xpath来创建和遍历xml,现在发现用linq更加方便,故记下相关用法。

LINQ创建XML树(C#)

 XElement Employees =   

new XElement("Employees",       

new XElement("Employee",           

new XElement("Name","Partrick"),           

new XElement("Phone","206-555-0144",                

new XAttribute("Type","Home")),           

new XElement("phone","425-555-0145",               

new XAttribute("Type","Work")),           

new XElement("Address",               

new XElement("Street1","123 Main St"),               

new XElement("City","Mercer Island"),               

new XElement("State","WA"),               

new XElement("Postal","68042")           

)       

)   

);

产生一个Eemployee.XML文件如下:

<Employees>

<Employee>

<Name>Partrick</Name>

<sex>Man</sex>

<Phone Type='Home'>206-555-0144</Phone>

<Phone Type='Work'>425-555-0145</Phone>

<Address>

<Stree1>123 Main St</Stree1>

<City>Mercer Island</city>

<Postal>68042</Postal>

</Address>

</Employee>

</Employees>

 

通过LINQ查询相关数据

 1)查找一个姓名为“Partrick”的人性别

IEnumerable<string> _sex =

 from _elem in Employees.Descendants("Employee")

select  (string) _elem.Arrribute("sex");

_sex.First<string>(); --此句就可以得到sex属性的值 man

 Descendants(XName)按文档顺序返回此文档或元素的经过筛选的子代元素集合。集合中只包括具有匹配 XName的元素。

此句也可以这样写

IEnumerable<string> _sex =

from _elem in Employees.Elements("Employee")

select  (string) _elem.Arrribute("sex");

2)如果要找一个work类型的电话

 IEnumerable<XElement> items =

from _elem in Employees.Elements("Phone")
                                          where _elem.Attribute("Type").Value=="Work"
                                          select (string) item;

另一种写法:

IEnumerable<XElement> items =

from _elem in Employees.Elements("Phone")
                                          select (string) item;

foreach(XElement _node in items)

{

if(_node.Attribute("Type").Value == "Work")

{

string phone = _node.Value;

}

}

下面一种循环写法,用处较多

还有SetElementValue可以修改节点中的数据 SetElementValue(节点名,数据);

 

这些是基本方法,如要进一步深入研究,可以查看Msdn

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值