2012-01-05 18 views
8

En las aplicaciones de Android, los recursos se especifican en documentos xml, que se integran automáticamente en la clase R, fácilmente accesibles dentro del código fuente como fuertemente tipados.Genera automáticamente clases de recursos basadas en XML en Java

¿Hay alguna manera en que pueda utilizar un enfoque similar para una aplicación de escritorio Java normal?

Lo que me gustaría lograr, es tanto la eliminación de cadenas del código (como una separación de "capas", más o menos) y para que sea fácil agregar soporte para la localización, simplemente diciéndole al programa para elegir el archivo xml correspondiente al idioma deseado.

He buscado en Google un poco, pero las cosas que estoy buscando parecen estar ahogadas en los resultados sobre el análisis o la salida de XML, en lugar de herramientas que utilizan XML para generar código.

Respuesta

2

aplicación mensaje de paquete de Eclipse (utilizado por los plugins, por ejemplo) se integra con la función de exteriorizar Cuerdas y genera tanto una clase estática y un archivo de propiedades de recursos para sus cadenas:

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

para esta integración para trabajar Eclipse necesita ver org.eclipse.osgi.util.NLS en la ruta de clase. Desde la memoria, las dependencias de las bibliotecas en las que estaba disponible eran un poco complicadas para el proyecto en el que utilicé este enfoque, así que acabo de obtener el código fuente y tenerlo como una clase independiente en mi módulo principal (vea los comentarios para más información). en ese).

Proporciona el tipo de seguridad que está buscando y las funciones IDE ahorran mucho tiempo. Hasta ahora no he encontrado inconvenientes en el enfoque.

Editar: esto es lo que ghostbust555 mencionó en los comentarios, pero no está claro en ese artículo que esto no está limitado a los complementos de Eclipse y se refiere a sus recursos a través de miembros estáticos de una clase de mensajes.

No he visto ninguna mención de otros utilizando este enfoque con sus propias aplicaciones, pero para mí tiene todo el sentido dada la integración IDE y la seguridad del tipo.

+0

Esto parece extremadamente prometedor. Estoy ejecutando Eclipse 3.7.1, y cuando hago clic en "Externalizar cadenas ..." en el menú todavía parece que tengo la versión anterior. ¿Cómo hago para que funcione la nueva versión? –

+0

Necesita la clase NLS en la classpath del proyecto. En mi caso, en lugar de meterme con bibliotecas para la dependencia, obtuve el código, lo agregué a mi proyecto (¡debo conservar el paquete!) Y reemplacé las dependencias de registro menores con el marco que estaba usando. La clase está aquí: http://grepcode.com/file/repository.grepcode.com/java/eclipse.org/3.5/org.eclipse/osgi/3.5.0/org/eclipse/osgi/util/NLS.java –

+0

OK, lo tengo funcionando =) Sin embargo, no puedo entender cómo usar este enfoque para la localización (es decir, especificar diferentes idiomas para la IU). –

0

no estoy seguro si esto es lo que quieres decir, pero echa un vistazo a internationalization- http://netbeans.org/kb/docs/java/gui-automatic-i18n.html

+0

parece ser algo así como lo que estoy buscando. Desafortunadamente, el tutorial está hecho completamente para NetBeans, y estoy usando Eclipse ... –

+0

http://www.eclipsepluginsite.com/internationalization.html ok inténtalo, entonces – ghostbust555

+0

Usando la función incorporada de Eclipse "Externalizar cadenas" no permite para extraer las cadenas de mis archivos GUI y ponerlos en recursos, pero aún así no genera clases generadas de seguridad. Lo que busco es una herramienta para construir * código * con mis cadenas, no * solo * levantar las cadenas de paquetes de recursos. –

0

¿Está buscando algo que analice archivos XML y genere instancias Java de objetos similares a "estructuras", como JAXP y JAXB?

+0

Preferiría algo donde no tuviera que definir el esquema xml y crear el código de análisis yo mismo, ya que solo quiero objetos realmente simples (estructura, más o menos, aunque con propiedades 'String') Esperaba que ya hubiera algo en su lugar. –

0

Encontré ResGen que, dado el paquete de recursos de archivos XML genera archivos Java que se pueden utilizar para acceder a los recursos de una manera segura.

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

+0

Esto se ve extremadamente prometedor, justo el tipo de cosa que quería. Actualmente no estamos usando hormiga para construir, pero esto podría hacer que valga la pena dar el paso ... –

Cuestiones relacionadas