又要吐槽一下:xml 根级别上的数据无效。 行 1,位置 1

首先,我用xmlTextWriter在内存中写了一段XML,方法如下:

        private byte[] GetSendByte(List<Article> returnList)

        {  // 在内存中创建xml到字符串

            using (MemoryStream fileStream = new MemoryStream())

            {

                using (XmlTextWriter textWriter = new XmlTextWriter(fileStream, Encoding.UTF8))

                {

                    textWriter.Formatting = Formatting.Indented;

                    textWriter.WriteStartDocument();

                    textWriter.WriteStartElement("Doc");

                    textWriter.WriteStartElement("ArrayOfArticle");

                    foreach (var item in returnList)

                    {

                        textWriter.WriteStartElement("Article");

                        textWriter.WriteElementString("Aid", item.Aid);

                        textWriter.WriteElementString("ATitle", item.ATitle);

                        textWriter.WriteElementString("ACatalog", item.ACatalog);

                        textWriter.WriteElementString("CatalogName", item.CatalogName);

                        textWriter.WriteElementString("AContent", item.AContent);

                        textWriter.WriteElementString("AddTime", item.AddTime);

                        textWriter.WriteElementString("SendTime", item.SendTime);

                        textWriter.WriteEndElement();

                    }

                    textWriter.WriteEndElement();//end  ArrayOfArticle

                    textWriter.WriteElementString("LastGetTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

                    textWriter.WriteEndElement();//end  body



                    textWriter.WriteEndDocument();//end Document



                    textWriter.Close();

                }

                return fileStream.ToArray();

            }

            //throw new NotImplementedException();

        }

 把byte[]转成string得到如下xml:

 

<?xml version="1.0" encoding="utf-8"?>

<body>

  <ArrayOfArticle>

    <Article>

      <Aid>246</Aid>

      <ATitle>222</ATitle>

      <ACatalog>12</ACatalog>

      <CatalogName>12</CatalogName>

      <AContent>2222</AContent>

      <AddTime>2013-09-30 09:52:41</AddTime>

      <SendTime>2013/9/30 9:52:41</SendTime>

    </Article>

    <Article>

      <Aid>738</Aid>

      <ATitle>1111</ATitle>

      <ACatalog>12</ACatalog>

      <CatalogName>12</CatalogName>

      <AContent>11111</AContent>

      <AddTime>2013-09-30 09:52:37</AddTime>

      <SendTime>2013/9/30 9:52:36</SendTime>

    </Article>

  </ArrayOfArticle>

  <LastGetTime>2013-09-30 09:52:46</LastGetTime>

</body>

 字符串绝对原版,一字不差。

然后 x.LoadXml(xmlstring);

尼妈,直接给了我一个“根级别上的数据无效。 行 1,位置 1”。

仔细看了看xml,一点问题发现不了。

然后跟踪字符串,发面里面含有“\r\n”,还有空格,猜是它们惹的祸,果断Replace掉。结果没有用。依然报错。

然后各种google,

  有说.net版本问的,把.net4.0改成2.0的就好。我一看,我的本来就是2.0的。

  有说XML格式不对的,很明显,这段xml看不出什么问题。

后来,看到一哥们的文章,原文很简单,直接贴上来:

http://hi.baidu.com/xsharkx/item/d2da2935cb6995f6a88428cc

根级别上的数据无效 行1 位置1 问题解决参考 public void Parse(string xml)

   {

    this.Items=new RssItemCollection();

    XmlDocument xDoc=new XmlDocument();

    try

    {

     xDoc.LoadXml(xml);

    }

    catch(Exception e)

    {

     throw new Exception("内容不符合标准",e);

    }

} 



加载XML时始终 根级别上的数据无效。 行1,位置1



在网上找了很久都没有结果 最后只有自己试试,Load前加了 xml=xml.Trim(); 通过了,但是xml前后都没有空格之类的符号 奇怪的错误,而且加载的xml 在IE下是不报错的。



不敢独享 望给同样经历的人一点参考

果断trim(),我操,行了!,而且回过头来,看看trim()前和trim()后的内容完全一样。

现在把问题留给大家,why???

你可能感兴趣的:(xml)