利用字典检测xml中的重复问题!

   Dictionary<string, string> odce = new Dictionary<string, string>();//字典 良好的判断是否为空的集合

            int s=0;

            Console.WriteLine  ("开始检测类id重复情况");
            XElement root = XElement.Load(@"E:\lixinhai\实验\qq.xml");
             Console.WriteLine("开始读取");
             StreamWriter writer = new StreamWriter(@"C:\Documents and Settings\Administrator\桌面\tt.txt", false, Encoding.GetEncoding("GB2312"));
         
           IEnumerable <XElement> oolist =from ele in root.Elements() where ele.Attributes().FirstOrDefault().Name.LocalName=="ID" select  ele;

           foreach (XElement item in oolist)
             {
                string ss=item.Attributes().FirstOrDefault().Value;
                string tt = item.Value.ToString();
                string pp=item.Name.LocalName.ToString();
                string kk = string.Empty;
                       try
                    {
                       s++;
                        odce.Add(ss, pp);
                    }
                    catch (ArgumentException)
                    {
                       //Console.WriteLine("An element with Key {0} already exists.", ss);
                        Console.WriteLine("设备ID:"+ss+"有重复");
                       // Console.WriteLine("名称是" kk.ToString());
                        writer.WriteLine("duplicate:" + ss);

                        writer.WriteLine("名称是:" + pp + "");
                    }
                    catch(Exception e)
                    {

                      Console.WriteLine(e.ToString());
                    }
            }
            Console.WriteLine(s.ToString()+"检测类");
            Console.WriteLine(odce.Count.ToString());
            Console.WriteLine("ok ! ********************************************** ");

 

            writer.Flush(); //若想输出类内情况 ,把下面的代码改写一下
            writer.Close();
            Console.WriteLine("按下任意键开始,检测类内重复情况");
            Console.ReadKey();

            int i= 0;
            int j = 0;
        

              Dictionary <string ,string> openwith=new Dictionary<string,string>();

           IEnumerable <XElement> llist =from ele in root.Elements() where ele.Attributes().FirstOrDefault().Name.LocalName=="ID" select ele; 
        foreach (XElement alist in llist)
 {
           
        IEnumerable<XElement> ss = from app in alist.Elements() select app   ;
        foreach (XElement ass  in ss)
        {  
        string wherestr = ss.FirstOrDefault().Value.ToString().ToLower().Trim(); //(第一个元素)

        string bb = ass.Name.LocalName.ToString().ToLower().Trim();
        string     kk = wherestr + bb; 
                    try
                    {
                        i = i + 1;
                       
                        openwith.Add(kk, wherestr);
                    }
                    catch (ArgumentException)
                    {
                        Console.WriteLine("An element with Key {0} already exists.", kk);
                       // Console.WriteLine(odce.Count.ToString());
                        j++;
                    }
                   
         }
       
      }
        Console.WriteLine(i.ToString() + "检测类内列重复完成");
        Console.WriteLine("ok");
        Console.WriteLine(openwith.Count.ToString());
        Console.WriteLine(j.ToString() + "**************************************");
    }

    }
View Code

 

转载于:https://www.cnblogs.com/lixinhai/archive/2011/08/29/2158304.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值