2012-01-05 22 views
8

在Android應用程序中,資源在xml文檔中指定,這些文檔自動構建到R類中,可以在源代碼中以強類型方式輕鬆訪問。在Java中基於XML自動構建資源類

有什麼辦法可以對普通Java桌面應用程序使用類似的方法嗎?

我想完成的是從代碼中刪除字符串(或多或少地將其作爲「圖層」的分隔),並且通過簡單地告訴程序就可以輕鬆地添加對本地化的支持選擇對應於所需語言的xml文件。

我已經搜索了一下,但是我正在尋找的東西似乎在關於解析或輸出xml的結果中淹沒,而不是使用xml生成代碼的工具。

回答

2

Eclipse的消息包實現(通過插件的例子中)與外部化字符串功能集成,並同時生成一個靜態類和資源屬性文件爲你的字符串:

http://www.eclipse.org/eclipse/platform-core/documents/3.1/message_bundles.html

對於這種整合工作的Eclipse需要看到的類路徑org.eclipse.osgi.util.NLS。從內存來看,它可用的庫的依賴關係對於我使用這種方法的項目來說有點棘手,所以我只是獲得了源代碼,並將其作爲獨立的類放在我的核心模塊中(請參閱評論以獲取更多信息在那)。

它提供了您正在尋找的類型安全性,IDE功能可以節省大量時間。到目前爲止,我發現這種方法沒有缺點。

編輯:這實際上是什麼ghostbust555在評論中提到,但在該文章中不明確,這不僅限於Eclipse插件,並且您通過消息類的靜態成員引用您的資源。

我還沒有看到任何其他人使用這種方法提及他們自己的應用程序,但對我來說,鑑於IDE集成和類型安全性,它是完全意義上的。

+0

這看起來非常有前途。我正在運行Eclipse 3.7.1,並且當我在菜單中單擊「外部化字符串...」時,我似乎仍舊有舊版本。我如何獲得新版本的工作? – 2012-01-09 22:57:01

+0

您需要項目類路徑上的NLS類。在我的情況下,我沒有爲依賴項弄亂庫,而是將代碼添加到我的項目中(必須保留包!),並用我正在使用的框架替換次要日誌記錄依賴項。 Class在這裏:http://grepcode.com/file/repository.grepcode.com/java/eclipse.org/3.5/org.eclipse/osgi/3.5.0/org/eclipse/osgi/util/NLS.java – 2012-01-09 23:02:50

+0

好吧,我得到它的工作=)但是,我不知道如何使用這種方法進行本地化(即爲用戶界面指定不同的語言)。 – 2012-01-09 23:23:15

0

我不知道如果這是你的意思,但檢查出internationalization- http://netbeans.org/kb/docs/java/gui-automatic-i18n.html

+0

似乎是我想要的東西。不幸的是,這個教程完全是爲NetBeans製作的,而且我正在使用Eclipse ... – 2012-01-05 04:38:06

+0

http://www.eclipsepluginsite.com/internationalization.html ok試試這個然後 – ghostbust555 2012-01-05 21:17:24

+0

使用Eclipse的內置「外部化字符串」功能確實允許我從我的GUI文件中提取字符串並將它們放入資源中,但它仍不會生成類型安全的類。我所追求的是一種用我的字符串實際構建* code *的工具,而不是* only *從資源包中提取字符串。 – 2012-01-08 09:10:49

0

您是否在尋找解析XML文件並生成類似「類似結構」對象的Java實例的東西,如JAXPJAXB

+0

我寧願一些我不需要定義xml方案並自己創建解析代碼的地方 - 因爲我只想要非常簡單的對象(結構,或多或少,儘管有'字符串'屬性),我希望已經有了一些東西。 – 2012-01-09 22:52:02

0

我遇到了ResGen,它給出資源包XML文件生成可用於以類型安全的方式訪問資源的Java文件。

http://eigenbase.sourceforge.net/resgen/

+0

這看起來非常有前途 - 只是我想要的東西。我們目前不使用螞蟻進行建築,但是這可能會使它值得采取步驟...... – 2012-01-09 22:59:45

相關問題