2013-09-05 61 views
0

我想解析Mac OS上的iTunes XML庫文件。如何解碼路徑並打開相關文件?

在iTunes的文件我有這個字符串:

<key>Location</key> 
<string>file://localhost/home/user/Downloads/album/01%C4%2024%5F7%20%28Intro%29%20&#38;.mp3</string> 

正如你可以看到它似乎是URL編碼。現在,下一步是在文件系統上查找並讀取此文件,但似乎找不到使用Java或Ruby執行此操作的正確方法。

我的主要目標是要做到這一點在Java中,但爲了簡單起見,我想這在Ruby中:

2.0.0p247 :003 > URI.decode(str) 
=> "file://localhost/home/user/Downloads/album/01\xC4 24_7 (Intro) &#38;.mp3" 
2.0.0p247 :004 > CGI.unescape(str) 
=> "file://localhost/home/user/Downloads/album/01\xC4 24_7 (Intro) &#38;.mp3" 

的文件出現在文件管理器爲/home/user/Downloads/album/01Ä 24_7 (Intro) &.mp3

的Java:

path = URLDecoder.decode(originalPath, "ISO-8859-1"); 
    -- 
    path = URLDecoder.decode(originalPath, "UTF-8"); 
    -- 
    path = new java.net.URI(originalPath).getPath(); 

但我找不到使用代碼中生成的path的文件。儘管在調試器中路徑顯示正確,但是exists()isFile()始終爲false。

我該如何繼續?

可悲的是我沒有從操作系統中獲取文件名,而是從XML文件中獲取文件名。我是否遇到長期存在的JVM錯誤?

設置JVM特定區域設置是不能接受的,因爲我不需要在用戶的區域只打開文件。

+0

首先,數字實體引用「&」應該在XML解析器中變成「&」。你正在使用哪個分析器? – Joni

+0

我正在使用SAXParser來讀取文件:https://github.com/codercowboy/iTunesUtilities/blob/master/src/com/worldsworstsoftware/xmltagparser/SimpleXMLTagParser.java#L124,並返回一個位置。 –

回答

0

解決了LANG env變量。