使用Linq to Xml 读取配置文件

Linq to Xml 大大简化了对xml文件的操作,匿名对象、Lambda表达式、Linq等C#3.0的新特性改变了我们不少的编程习惯,通过Linq我们可以有一种统一的操作集合和对象的方法,下面我们写一个例子来感受一下Linq to Xml的魅力。
首先这里有一个xml配置文件,用来配置一个Web代理,根据调用传入的ProxyID来判断调用是否有权限访问对应的服务(asmx),配置文件如下:
<? xml version="1.0" encoding="utf-8"  ?>
< proxySet >
    
< proxy  proxyID ="1e7c7999-274b-40b7-a4e6-d15c1c010bc6"  description ="" >
        
< urls >
            
< url > http://www.face512.com/UpdatingSource1.asmx </ url >
            
< url > http://www.face512.com/UpdatingSource2.asmx </ url >
            
< url > http://www.face512.com/UpdatingSource3.asmx </ url >
        
</ urls >
    
</ proxy >
    
< proxy  proxyID ="5dfbe758-3ac7-4e8c-bd1e-6d0cc2e34d99"  description ="" >
        
< urls >
            
< url > http://www.face512.com/test01.asmx </ url >
        
</ urls >
    
</ proxy >
    
< proxy  proxyID ="8f097253-e8dc-489f-86df-19b08c2d7ce2"  description ="" >
        
< urls >
            
< url > http://www.face512.com/test02.asmx </ url >
        
</ urls >
    
</ proxy >
</ proxySet >

这里我们通过一个读取配置文件中某个代理中的可能url列表,先看一下Linq代理,然后再分析一下:
string  filePath  =   string .Concat(AppDomain.CurrentDomain.BaseDirectory,  @" App_Data\Proxy.config " );
XDocument doc 
=  XDocument.Load(filePath);

var foundUrls 
=  from p  in  doc.Descendants( " proxy " )
                
where  p.Attribute( " proxyID " ).Value  ==   " 1e7c7999-274b-40b7-a4e6-d15c1c010bc6 "
                select 
new
                
{
                    Urls 
= p.Element("urls").Descendants("url").Select(u => u.Value).ToArray()
                }
;
foreach  (var url  in  foundUrls.Single().Urls)
{
    Response.Output.Write(url 
+ "<br/>");
}
其中,
Descendants 可遍历某节点或文档下的所有子节点
Elements 则是遍历当前节点或文档下一级的子节点
这里通过Descendants遍历所有的proxy节点,并且只处理proxy的proxyID属性为指定值的节点;
通过p.Element("urls")获取urls获了节点;
p.Element("urls").Descendants("url") 遍历其中的url节点集
.Select(u => u.Value) 只取其中的节点值,最后通过ToArray()转换数组赋值组Urls变量

因为这里我们知道在proxy节点中urls只有一个这样的节点,所以这里就可以不需要使用foreach遍历foundUrls,而是通过foundUrls.Single()就可以获取其唯一的对象,最后通过遍历Urls数组就可以得出此代理中所有的允许访问的URL了
http://www.face512.com/UpdatingSource1.asmx
http://www.face512.com/UpdatingSource2.asmx
http://www.face512.com/UpdatingSource3.asmx


参考:Linq To XML 学习

转载于:https://www.cnblogs.com/chenjunbiao/archive/2008/05/21/1760213.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值