Track.getSimilar:在元素中找到了无效的XML字符(Unicode:0x3)...

时间:2014-04-09 08:34:51

标签: java xml unicode arabic last.fm

我使用last.fm API:Api Last.fm

我有他们的艺术家的歌曲(曲目)列表,我想恢复每首歌曲,如他的歌曲。方法 Track.getSimilar(艺术家,曲目,键)完美无缺。 但是当艺术家或曲目使用阿拉伯语时,我会遇到以下异常:

    [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)

请问如何解决这个问题?

提前谢谢

2 个答案:

答案 0 :(得分:6)

Unicode代码点0x3是一个控制字符。它不是任何脚本或语言系统中的正常字符,因此它的存在显然是一个错误,可能在数据库本身。这可能是编码转换失败,字符到字节转换或数据库写入损坏的结果。

XML不能包含控制字符 - 甚至不能包含实体引用。因此,您的XML格式不正确,无法使用XML工具进行处理。相反,您需要使用字符串处理或类似方法删除该错误字符。

同时,您可以检查XML中非法的所有其他字符。 XML不允许来自Unicode代理块[0xD800 - 0xDFFF],非字符0xFFFE0xFFFF的任何字符或0x20(=控制字符) execpt下面的字符 0x9 [tab],0xA [LF]和0xD [CR]。这在此正式陈述:http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char

答案 1 :(得分:1)

0x3是ASCII control code ETX,但是一些旧程序可能会将它用作回车符或其他东西,所以你可以通过将类似的东西粘贴到文本字段来实现这一点。