2010-05-06 3 views
1

Можно ли создать класс динамически, прочитав XML-файл (желательно в java)? Если да, предоставьте указателям, как это сделать.Можно ли создать класс из xml-файла?

В процессе разработки у нас появился класс с 5 атрибутами, все эти атрибуты соответствуют записи в xml-файле, теперь, если пользователь добавляет/изменяет запись xml, соответствующий ей объект должен автоматически меняются, один подход будет генерировать исходный код, прежде чем компилировать time.Is там любой другой способ?

Есть ли общий шаблон для моделирования таких изменений в системе?

Спасибо,

ответ

4

Если у вас есть XML-схема для вашего XML, для этого есть несколько комплектов. Начните с JAX-B.

+0

Спасибо за информацию, я прохожу через нее. Как раз перед тем, как я прошел весь документ, у меня был быстрый вопрос: в настоящее время у меня уже есть статическое объявление класса, которое используется во всем модуле, что сделает JAX-B для меня? заменит ли он статический класс времени компиляции тем, который он создает во время выполнения? Thanks – panzerschreck

+0

Вы можете либо сообщить JAXB, чтобы сгенерировать исходный файл Java из XSD, либо наоборот, или вы можете общаться с @annotations до тех пор, пока они не сближаются. – bmargulies

0

Процесс обычно работает наоборот (то есть. Определение класса с этими атрибутами, и сериализации экземпляра класса в XML)

Если вам действительно нужно что-то гибкость , язык сценариев сэкономит вам массу неприятностей.

0

Я думаю, JAX-B может обеспечить такую ​​функциональность.

0

Если вы ищете генерацию байтового кода, посмотрите на cglib, он используется в Hibernate.

Но, может быть, некоторые аннотации также могут удовлетворить ваши требования, точно так же, как вложение в зависимость от Google Guice.

1

Если вы сохранили свои атрибуты в HashMap, вы можете просто проанализировать XML и затем соответствующим образом установить атрибуты.

1

Предполагая, что у вас есть XML-схема (xsd), вы можете передать эту схему команде JAXB xjc для генерации классов Java. xjc входит в состав Java 6 JDK.

Смежные вопросы