我有這個問題..我從客戶端接收數據..使用套接字連接。但這並不重要。所有數據都使用XDocument對象存儲在XML文件中。 有時,當調用XDocument.Save(filestream)並將特定字符或符號傳遞給它時,我得到一個Exception(無效的十六進制字符),這意味着該XML文件不能有一些特殊字符? 如果是的話,我在哪裏可以找到可能產生這種異常的特殊字符列表?在調用Xdocument.save之前應該跳過的字符。
回答
字符在範圍[0x0-0x1F]被稱爲控制字符和不包括0x9,是0xA,爲0xD它們不能在XML使用。
下面是來自XML specification報價:
[定義:A解析實體包含文本,字符的 可以表示標記或字符數據的序列,] [定義: 字符是一個原子由ISO/IEC 10646:2000 [ISO/IEC 10646]規定的文本單位。合法的字符包括製表符,回車,換行, 和Unicode和ISO/IEC 10646的 這些標準A.1標準參考資料引用的版本的法律性質是當前在 時間編制本文件。這些 標準可能會通過修訂或新版本添加新字符。因此,XML處理器 必須接受爲Char指定的範圍內的任何字符。 ]
字符範圍
char :: =#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]/*任何Unicode字符, (不包括代理塊,FFFE和FFFF)。 */
我認爲這取決於它寫在哪裏...... – Tigran 2012-01-28 21:33:26
@Tigran,不,它不依賴於它。 – 2012-01-28 21:35:15
@Darin給出的答案應該讓你指出正確的方向。我會補充一點,如果你有一個用於xml開發的工具,如XMLSpy或Stylus Studio,你可以快速確定違規字符。如果你沒有這樣的工具,你可以使用在線XML驗證從WC3學校在這裏找到:
http://www.w3schools.com/xml/xml_validator.asp
這將檢查XML結構完好形成,如果它包含無效字符也不會形成良好。
更不可能的情況可能是由XML文檔指定的編碼並允許字符造成問題的原因。如果文檔被指定爲UTF-8,那很可能是這個問題。
- 1. XDocument.Save(字符串)不可用
- 2. NSURLConnection在它應該調用connectionDidFinishLoading之前?
- 3. 跳過之前在軌
- 4. Rails在API調用過濾前跳過
- 5. uniq的跳過前N個字符/場
- 6. 在調用File.Delete之前,我應該調用File.Exists嗎?
- 7. iOS:在應用程序已被使用之前跳過ViewControllers
- 8. XDocument.Save用XML創建3個壞字符
- 9. Python RegEx跳過前幾個字符?
- 10. FREAD跳過前8個字符
- 11. 什麼時候應該跳過在MySQL中使用的字符串
- 12. 在動作不跳過Rails 4之前跳過4
- 13. 在讀取「powerquery」之前跳過6行
- 14. 我應該在ObjectOutputSream的close()之前調用reset()嗎?
- 15. 限制之前的返回計數並跳過應用貓鼬
- 16. Eclipse CDT:在調試/運行之前跳過make/build
- 17. VB.NET跳過字符
- 18. Ruby跳過之前得到的參數
- 19. 嘗試在Ajax之前/期間調用調光器/跳動器
- 20. 如何XDocument.Save寫作逃逸字符
- 21. 應該在socket被select()調用之前設置NON-BLOCKING?
- 22. 這是跳過字符之前使用c的字符串中的下劃線(_)的最好方法#
- 23. 字符跳躍問題 - 在按下跳轉按鈕之前浮動起來
- 24. 跳過一個字符串的前幾個字
- 25. Android的BitmapFactory decodeFile被調用之前,它應該是
- 26. 在Box2D彈跳地球之前彈跳
- 27. 使用正則表達式跳過字符之間的第二個字符串
- 28. 「跳過」方法僅支持LINQ to Entities中的排序輸入。該方法 '排序依據' 必須調用該方法之前, '跳過'
- 29. 在投入RegEx之前應該轉義的所有字符的列表?
- 30. 在回發之前調用字符串值的c#函數?
是'XML'不只是一個文本文件,你可以不寫任何你想要的,只要你想要的,但經常有solution.Please提供你寫的代碼示例,並得到例外。 – Tigran 2012-01-28 21:32:29
您可能需要爲文檔的某些部分使用CDATA。 http://msdn.microsoft.com/en-us/library/system.xml.linq.xcdata%28v=vs.100%29.aspx – oleksii 2012-01-28 21:34:54
只需瞭解更多的細節,您現在就可以得到明確的答案。始終發佈完整的錯誤消息和相關代碼。但Darin有一個很好的猜測。 – 2012-01-28 21:43:03