XmlDocument的loadXml()方法一直抛错 
这个是错误信息:用过好几种方法(command是一个xml的字符串)
XmlDocument doc=new XmlDocument();
1.用loadXml方法,抛错:“.”(十六进制值 0x00)是无效的字符 
doc.loadXml(command);
2.用load方法 也是抛上面的问题
           byte[] buffer = Encoding.UTF8.GetBytes(command);
           MemoryStream ms = new MemoryStream(buffer);
           ms.Flush();
           ms.Position = 0;
           doc.Load(ms);
3.用innerXnl也是如果改变编码,则抛错:根级别上的数据无效该怎么解决呢?

解决方案 »

  1.   

    是编码问题,但是不知道具体问题的,取决于你的xml文档是否合乎规范,另外它未必就是utf8的,尝试下别的编码。
      

  2.   

    编码,我都试了好多,还是不行,我的xml的字符串如果获取拷贝出来,重新写一个测试的程序是可以的,没有问题的
      

  3.   

    你的string中有不可识别的字符
    第一,可能不符合xml规范
    第二,你改变xmldocument的编码试试
      

  4.   

    我的xml是符合规范的,如果拷贝出来处理是一点问题都没有的
    我也觉得是编码的问题,但是现在编码我试了好多个了,总是抛错
      

  5.   

      StreamReader reader = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
      

  6.   

    我的xml字符串是这样的
    <?xml version="1.0" ?><request><command name="KEEPALIVE"></command></request>
      

  7.   

    终于解决了,出现问题是因为在load或者loadXml的时候有一些特殊字符没有处理,从网上找个了方法,把特殊字符处理掉就可以了
    private string ReplaceLowOrderASCIICharacters(string tmp)
            {
                StringBuilder info = new StringBuilder();
                foreach (char cc in tmp)
                {
                    int ss = (int)cc;
                    if (((ss >= 0) && (ss <= 8)) || ((ss >= 11) && (ss <= 12)) || ((ss >= 14) && (ss <= 32)))
                        info.AppendFormat(" ", ss);
                    else info.Append(cc);
                }
                return info.ToString();
            }