解决方案 »

  1.   

    话说,这个需求挺蛋疼,为什么把那么多乱七八糟的字符串都存到一个list里去
    如果你完全不知道其他字符串到底有可能是什么,不抛异常还能怎么办,自己正则判断吗,效率更低
      

  2.   

     
    也就是这问题无解哦? xml是有规律的字符串,除了抛异常,必定还是有其他算法能快速找出来哦。
      

  3.   

    首先 怎么的判断是不是XML格式就是个问题
      

  4.   

    对呀,说个半天,就是这问题鄙人没有太好的解决方案,这不,来csdn求助各位经验丰富的大神呢。
      

  5.   

    话说,你的list里的数据到底哪来的,不是你自己放进去的吗,放进去之前先判断一下,如果是xml,放到另一个list里,不好吗
    无脑add进去,过后又找,太没效率了
      

  6.   

    这个我觉的肯定不是这么弄的,你肯定要把合法的另外存,而过滤这个合法的XML的过程,注定高效不了。
      

  7.   

    如果List里的xml字符串错误原因一致的话倒是可以针对这个错误原因进行检查
    但是如果错误原因不确定或者错误种类比较多的话,LoadXML() 然后捕获异常的方式反而效率会比较高
    而且检查效率也与XML字符串的长度有关
      

  8.   


    list的数据是我添加进去的,放进去之前先判断一下,判断的时候不一样么?  100万条数据不一样要判断100万次么,判断这100万次是在所难免的,现在就想找个高效的方法来判断。
      

  9.   

    自己先简单预查一下,例如检测开头和结尾是不是<>就可以过滤掉大部分
      

  10.   

    那要看“不正确的xml”都是怎么个不正确。
      

  11.   

    我们假设你的错误的xml中任何地方都可能有错,比如最后一个标记的>没有封闭,有一种不回溯检测xml是否正确的算法。
    那么显然对于list的每个成员,都必须完整读取一次才可以判断。
      

  12.   

    是的,这正是我反复强调的,不知道错误的字符串都有可能是什么,就无从判断是你加进去的没错,问题是数据源头肯定不是你代码写死的吧,数据到底是哪里来的?从数据库里读出来的?从网页上抓取的?网页上,所有的http请求数据,来自于不同网站,网站随机的,所以说,数据来源我们不可控啊。目前找到一个老外用汇编写的xml解析程序,效率还蛮高的,我用c++写个接口,编译成dll,再用c#调用,正在测试效率。
      

  13.   

    除了多开几个线程,如何判断是否是xml还是用微软现成的通过字符串加载xml方法,通过try catch来判断是否正确
      

  14.   

    这个就跟排序算法没有所谓最好最快一样,对于不同的数据,同样的算法效率也不见得一样
    比如如果错误数据是固定缺失了最后的>,其实字符串判断最后是不是>就行了,这样是最快的,
    但是对于其他类型的错误,这个算法就无能为力了而从头到尾检查每一项是否合法,必然是效率比较低的算法,但是也是适应性最强的算法
      

  15.   

    用try,catch捕获异常,虽然效率最低,但是除了能够验证结构是否缺失,还能验证每一项类型是否正确,就是是否能真正以xml的方式读取出来数据
      

  16.   

    我会告诉你我做过list里面有1000多万的数据的模糊搜索吗?最后哥写了一个多线程的分段搜索解决了。
      

  17.   

    只能先分批过滤,按照XML格式头比对
      

  18.   

    如果数量级是500万,加try.catch 肯定要蛋疼.
    这个数量级如果不用多线程谈 效率也是 扯淡.
    可不可以往索引表,Map等方向想. 像跑解密一样.