zoukankan      html  css  js  c++  java
  • 水平太差,虽然认为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 { getset; }
            
    public string schedulename { getset; }
            
    public string configfile { getset; }
        }
        
    class Schedules
        {
            
    public int Idle { getset; }
            
    public List<Schedule> ScheduleList { getset; }        
        }
        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();
            }


     

  • 相关阅读:
    Java学习笔记之---单例模型
    Java学习笔记之---内部类
    Java项目案例之--封装的实例
    Java学习笔记之---构造方法
    Java学习笔记之---static
    Java学习笔记之---面向对象
    咨询顾问与逻辑思客
    最重要与靠不住之间如何平衡
    《网络借贷信息中介机构业务活动管理暂行办法》
    商业银行法律法规与监管要求汇总
  • 原文地址:https://www.cnblogs.com/GDLMO/p/1987099.html
Copyright © 2011-2022 走看看