2012-01-05 20 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

相关问题