又要吐槽一下: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???


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM