从别的程序中传给我一个字符串,是XML格式,我加载却报非法字符,而查看字符串又看不出什么不正常,我试着对字符串进行转码也无效,这种情况该如何处理?哪位知道如何过滤掉非法字符?

解决方案 »

  1.   

    那应该是传过来的XML字符串有问题..和非法字符没有关系
      

  2.   

    对,是有问题,但我怎么能过滤掉他的非法字符,那边是一个CB写的DLL,我是用C#调的,那边也查不出什么地方加了非法字符,但里面肯定有,单看却看不出来
      

  3.   

    传过来的XML串让他们处理成UTF-8编码
    或是XML结点用:
    <![CATA[   数据放这里   ]]>这种格式
      

  4.   

    看看具体内容
    XML字符再转化获取数据。
      System.Xml.XmlDocument xd= new System.Xml.XmlDocument();
      xd.LoadXml(xml);
                foreach (System.Xml.XmlNode node in xd.ChildNodes)
                {   
                                 
                }
      

  5.   

    其实DLL那边也不知道怎么加进去了乱码,也查不出问题了,编码换成UTF-8了也不行,其实是他把他提到的数据,组成了一个XML格式的DataSet数据集,把字符拷出来,放到文件里,用IE打开XML文件一点没有错误,但如果我用dataSet加载,就报非法字符串,郁闷。
      

  6.   

    用IE打开这个文件什么都很正常,用XMLDocument载入也正常,但用DataSet载入却报错,就报非法字符串。查看文件,没有任何不对。郁闷。
      

  7.   

    可以先用Dataset.ReadXMLSchema()试下看看有没有问题,如果有,那应该是因为DataTable的column 里面含有非法字符
      

  8.   

    你调试的时候把得到的那段字符 复制下来:string xml = "得到的XML字符";xd.LoadXml("得到的XML字符"); 然后再去试 是不是有问题............我前段时间就遇到了一个问题  就是解密一个xml文件,得到XML字符串, 然后用xd.LoadXml(xml),总是通不过..报什么错忘记了...调试的时候把那段字符拷贝下来,放到xd.LoadXml("XML字符"); 有可以通过
    后来网上查了下  xml.Trim();  加了这个东西 可以了 ,不知道是什么原因,但是前后又没有空格....你也试一下...
      

  9.   

    LoadXml改成load 应该就可以了
      

  10.   

    XMLDocument载入也正常,但用DataSet载入报错,Dataset.ReadXMLSchema()不出错,无奈,转换成XML,自已解析再生成数据集。