水平太差,虽然认为Linq是个好东东,但有谁能教教我,怎么调试?

想做个通过XML做配置的方案,使用Linq
<? xml version="1.0" encoding="utf-8" ?>
< root >
    
< schedules >
        
< idle > 3600000 </ idle >
        
< schedule >
            
< dic > e:\ </ dic >
            
< schedulename > dhdp </ schedulename >
            
< configfile > dhdpconfig.xml </ configfile >
        
</ schedule >
        
< schedule >
            
< dic > e:\ </ dic >
            
< schedulename > logdhdp </ schedulename >
            
< configfile > logdhdpconfig.xml </ configfile >
        
</ schedule >
    
</ schedules >
</ root >
class  Schedule 
    {
        
public   string  dic {  get set ; }
        
public   string  schedulename {  get set ; }
        
public   string  configfile {  get set ; }
    }
    
class  Schedules
    {
        
public   int  Idle {  get set ; }
        
public  List < Schedule >  ScheduleList {  get set ; }        
    }
     class  Program
    {
        
static   void  Main( string [] args)
        {
            
            var xmlfn 
=   @" Schedules.xml " ;        
            TestScheduleList(xmlfn);
            TestSchedulesList(xmlfn);
            TestSchedulesList2(xmlfn);
            Console.ReadKey();
        }
        
public   static   void  TestScheduleList( string  xmlfn)
        {
            XElement SchedulesXml 
=  XElement.Load(xmlfn);

            List
< Schedule >  ScheduleList  =  (
                from ScheduleElement 
in  SchedulesXml.Elements( " schedules " ).Descendants( " schedule " )
                select 
new  Schedule
                {
                    dic 
=  ScheduleElement.Element( " dic " ).Value,
                    schedulename 
=  ScheduleElement.Element( " schedulename " ).Value,
                    configfile 
=  ScheduleElement.Element( " configfile " ).Value                   
                }
            ).ToList();
            Console.WriteLine(
" 测试ScheduleList " );
            
foreach  (var sc  in  ScheduleList)
            {
                Console.WriteLine(sc.configfile);
            }
            Console.ReadKey();
        }
        
public   static   void  TestSchedulesList( string  xmlfn)
        {
            XElement SchedulesXml 
=  XElement.Load(xmlfn);
            var SchedulesList 
=  from SchedulesElement  in  SchedulesXml.Elements( " schedules " )
                                select SchedulesElement;
            Console.WriteLine(
" 测试SchedulesList " );
            
foreach  (var scs  in  SchedulesList)
            {
                Console.WriteLine(scs.Value);
            }
            Console.ReadKey();
        }
        
public   static   void  TestSchedulesList2( string  xmlfn)
        {
            XElement SchedulesXml 
=  XElement.Load(xmlfn);
            var SchedulesList 
=  from SchedulesElement  in  SchedulesXml.Elements( " schedules " )
                                select 
new  Schedules
                                {
                                    Idle 
=  ( int )SchedulesElement.Element( " Idle " ),
                                    ScheduleList 
=  (
                                        from ScheduleElement 
in  SchedulesElement.Descendants( " schedule " )
                                        select 
new  Schedule
                                        {
                                            dic 
=  ScheduleElement.Element( " dic " ).Value,
                                            schedulename 
=  ScheduleElement.Element( " schedulename " ).Value,
                                            configfile 
=  ScheduleElement.Element( " configfile " ).Value                                           
                                        }
                                     ).ToList()
                                };
            Console.WriteLine(
" 测试SchedulesList " );
            
foreach  (var scs  in  SchedulesList)
            {
                Console.WriteLine(scs.ScheduleList.ToString());
            }
            Console.ReadKey();
        }
    }
 
 

在使用TestSchedulesList2有错误,不知怎样调试,错误如下:

未处理 System.ArgumentNullException
  Message="值不能为空。\r\n参数名: element"
  Source="System.Xml.Linq"
  ParamName="element"
  StackTrace:
       在 System.Xml.Linq.XElement.op_Explicit(XElement element)
       在 ConsoleApplication1.Program.<TestSchedulesList2>b__7(XElement SchedulesElement) 位置 D:\web\ConsoleApplication1\ConsoleApplication1\Program.cs:行号 170
       在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
       在 ConsoleApplication1.Program.TestSchedulesList2(String xmlfn) 位置 D:\web\ConsoleApplication1\ConsoleApplication1\Program.cs:行号 186
       在 ConsoleApplication1.Program.Main(String[] args) 位置 D:\web\ConsoleApplication1\ConsoleApplication1\Program.cs:行号 129
       在 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       在 System.Threading.ThreadHelper.ThreadStart()
  InnerException:

经过大家的提醒,终于找到原因了,XML是要区分大小写的,我将idle写成了Idle了,改后运行正常了。

public   static   void  TestSchedulesList2( string  xmlfn)
        {
            XElement SchedulesXml 
=  XElement.Load(xmlfn);
            var SchedulesList 
=  from SchedulesElement  in  SchedulesXml.Elements( " schedules " )
               select 
new  Schedules
                {
                    Idle 
=   int .Parse(SchedulesElement.Element( " idle " ).Value),
                    ScheduleList 
=
                        (from ScheduleElement 
in  SchedulesElement.Descendants( " schedule " )
                            select 
new  Schedule
                            {
                                dic 
=  ScheduleElement.Element( " dic " ).Value,
                                schedulename 
=  ScheduleElement.Element( " schedulename " ).Value,
                                configfile 
=  ScheduleElement.Element( " configfile " ).Value
                             
}
                         ).ToList()
                };
            Console.WriteLine(
" 测试SchedulesList " );
            
foreach  (var scs  in  SchedulesList)
            {
                Console.WriteLine(scs.ScheduleList[
0 ].schedulename);
            }
            Console.ReadKey();
        }


 

 

转载于:https://www.cnblogs.com/GDLMO/archive/2011/03/17/1987099.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值