2014-04-09 116 views
3

我用的是last.fm API:Api Last.fmTrack.getSimilar:無效的XML字符(Unicode:0x3)中的元素被發現...

我的歌曲列表(軌道)與他們的藝術家,我想爲他的歌曲中的每首歌曲恢復。方法Track.getSimilar(Artist,track,key)完美運作。 當藝術家或曲目是阿拉伯語,我得到以下異常:

[Fatal Error] :2583:13: An invalid XML character (Unicode: 0x3) was found in the element content of the document. 
Exception in thread "main" de.umass.lastfm.CallException: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x3) was found in the element content of the document. 
at de.umass.lastfm.Caller.call(Caller.java:268) 
at de.umass.lastfm.Caller.call(Caller.java:189) 
at de.umass.lastfm.Track.getSimilar(Track.java:369) 

我怎樣才能解決這個問題,請?

預先感謝您

回答

6

Unicode代碼點0x3是控制字符。這在任何腳本或語言系統中都不是一個正常的字符,所以它的存在顯然是一個錯誤,可能在數據庫本身。這可能是編碼轉換失敗,字符轉換爲字節或數據庫寫入損壞的結果。

XML不能包含控制字符 - 甚至不能作爲實體引用。因此,您的XML格式不正確,無法使用XML工具進行處理。相反,您需要使用字符串處理或類似方法刪除錯誤的字符。

同時您可以檢查XML中非法的所有其他字符。 XML不允許從Unicode代理塊[0xD800 - 0xDFFF],非字符0xFFFE0xFFFF或字符以下0x20(=控制字符)的任何字符execpt0x9 [標籤],0xA [LF]和0xD [CR]。這是在這裏正式說明:http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char

+0

感謝您的回答:) –

+0

請注意,某些文本編輯器中會顯示控制字符(例如,0x03在Textmate中顯示爲^ ^)您可以嘗試複製/粘貼您的可疑文本,以便以可視方式查找時髦字符! ,正則表達式總是可以跟蹤這些字符。 – rinogo

1

0x3是ASCII control code ETX,但一些舊的程序可能會用它作爲回車或什麼的,所以你可以通過從類似的東西粘貼到一個文本字段中得到這個。

相關問題