Linq To XML

 

原文:http://www.cftea.com/c/2009/08/TY1T2HTH7TY3NXGD.asp

假设有 XML 文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<company>
<name engName="cftea">千一网络</name>
<employees>
<employee>
<name age="29">张龙</name>
</employee>
<employee>
<name age="28">赵虎</name>
</employee>
</employees>
</company>

 

我们用 LINQ to XML 去查 engName 的值,代码如下:

 

1 System.Xml.Linq.XDocument xd = System.Xml.Linq.XDocument.Load(Server.MapPath("Company.xml"));
2
3 var engName = from x in xd.Element("company").Element("name").Attributes()
4 where x.Name =="engName"
5 select x.Value;
6
7 Response.Write(engName.First<string>());

 

  显示为 cftea。

说明:xd.Element("company").Element("name") 并不包括 employees 中的 name 节点。

同样用上面的 XML 文件,查询年龄 > 28 岁的雇员:

 

 1 System.Xml.Linq.XElement xe = System.Xml.Linq.XElement.Load(Server.MapPath("Company.xml"));
2
3 var employees = from emp in xe.Element("employees").Elements()
4 where Convert.ToInt32(emp.Element("name").Attribute("age").Value) >28
5 select new { Name = emp.Element("name").Value, Age = emp.Element("name").Attribute("age").Value };
6
7 foreach (var employee in employees)
8 {
9 Response.Write(employee.Name +"<br>");
10 }

 

两个例子中,一个用了 XDocument、一个用了 XElement,二者的区别是什么呢?我们拿第二个例的 from 语句来作个对比:

from emp in xd.Element("company").Element("employees").Elements()
from emp in xe.Element("employees").Elements()

可以看出:如果使用 XDocument,则需要从根节点,一步一步往下;而使用 XElement 则比较自由,可以直接指定任意层次的节点。

 1 private INodeComponentInterface GetNode(string fileName)
2 {
3 Assembly ass = Assembly.LoadFrom(fileName);
4 Module[] modules = ass.GetModules();
5 Type[] types;
6 foreach(Module module in modules)
7 {
8 try
9 {
10 types = module.GetTypes();
11 }
12 catch(ReflectionTypeLoadException r)
13 {
14 MessageBox.Show("获取模块"+module.Name+"的类型时出现异常。异常信息:"+r.Message);
15 types =null;
16 }
17 if(null!= types)
18 {
19 foreach(Type type in types)
20 {
21 Type inter =typeof(INodeComponentInterface);
22 if(type != inter && inter.IsAssignableFrom(type))
23 {
24 return ass.CreateInstance(type.FullName) as INodeComponentInterface;
25 }
26 }
27 }
28
29 }
30 returnnull;
31 }

  

 
 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/teafree/archive/2011/08/03/2126701.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值