2012-02-16 25 views
0

W3C驗證告訴我爲什麼使用.net的XMLWriter創建的每個XML文件都無法通過W3C驗證?

Line 256, Column 12: non SGML character number 0 

出現在文件的最後兩個錯誤。

這裏是我的縮寫代碼:

  dim writer as XmlWriter 
      dim xmlSettings as new XmlWriterSettings 
      xmlSettings.Encoding = Encoding.UTF8 
      xmlSettings.CheckCharacters = true 
      xmlSettings.ConformanceLevel = ConformanceLevel.Document 
      xmlSettings.Indent = true 

      writer = XmlWriter.Create("D:\somedata.xml", xmlSettings) 

      writer.WriteStartDocument() 
      writer.WriteStartElement("listings") 

      while invReader.Read() 

       writer.WriteStartElement("listing") 

       'a bunch of .writeElementString calls here 

       writer.WriteEndElement() 
      end while  
      writer.WriteEndElement() 
      writer.WriteEndDocument() 
      writer.Close() 
+0

請顯示您的XML的相關部分。 – jrummell 2012-02-16 21:14:02

+0

使用您的代碼生成的文件在我的Firefox中工作得很好。 – svick 2012-02-16 21:18:23

+0

@svick你是對的。我想我放入列表元素的數據會導致文件末尾發生異常。 – rg89 2012-02-16 21:24:10

回答

0

它看起來像你試圖寫出來的驗證認爲一個字符是非法

看看這個鏈接,你的錯誤的例子:

http://forums.htmlhelp.com/index.php?showtopic=11270

+0

我同意驗證器找到無效字符,但它在最後一個結束標記之後的文件末尾。當我在文本編輯器中打開我的XML文件時,我甚至無法選擇驗證器所說的字符是無效的字符。該文件結束於之前的角色。 – rg89 2012-02-16 21:30:28

+1

可能在十六進制編輯器中打開該文件並查看該字符是什麼。如果它在最後,那麼它可能是WriteEndDocument或WriteEndElement中添加無效字符的代碼。也許會設置一個斷點並逐步檢查正在編寫的代碼。 – 2012-02-16 21:49:08