zoukankan      html  css  js  c++  java
  • 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 }

      

     
     

     

     

     

  • 相关阅读:
    Linux常用操作命令
    Linux下查看CPU型号,内存大小,硬盘空间命令
    PhpExcel中文帮助手册|PhpExcel使用方法
    PHP操作cookie函数:setcookie()与setrawcookie()
    利用phantomjs模拟QQ自动登录
    无法在同一张表上查询和更新的问题解决方法
    App开放接口api安全性—Token签名sign的设计与实现
    开放api接口签名验证
    bootstrap字体图标
    booatrap中的表格样式
  • 原文地址:https://www.cnblogs.com/teafree/p/2126701.html
Copyright © 2011-2022 走看看