Как создать объект Java путем отражения путем чтения имен и типов полей из XML-файла? - PullRequest
0 голосов
/ 16 октября 2010

Я хочу создать класс динамически во время выполнения, читая имена полей и их типы из файла XML. Например, мой файл XML выглядит следующим образом:

<person>
   <name type="String">abc</name>
   <age type="Integer">30</age>
</person>

Я также хочу иметь методы getter и setters для каждого поля.

Есть ли для этого примеры или лучшие подходы?

Ответы [ 3 ]

2 голосов
/ 16 октября 2010

Посмотрите на XStream , его очень легко сериализовать в / из XML.

1 голос
/ 16 октября 2010

Это технически возможно, но (если кто-то не может указать на существующее решение), это будет большая работа.(Вы можете делать много умных вещей, генерируя исходный код и компилируя его во время выполнения ... например.)

Но, честно говоря, это, вероятно, бесполезная вещь.После того, как вы загрузили ваш XML-объект как экземпляр совершенно нового Java-класса, вам будет очень трудно его использовать.Для начала, ваше существующее статически скомпилированное приложение сможет только рефлексивно обращаться к полям и методам нового класса.

IMO, вам лучше загрузить XML в общие Map объекты или Properties объектов.Или просто используйте DOM, созданный стандартным парсером XML.

В качестве альтернативы, получите DTD, XSD или какую-то другую «схему» для XML и сгенерируйте Java-классы из этого.,Затем можете написать и статически скомпилировать ваше приложение для вызова этих классов.

0 голосов
/ 16 октября 2010

Java не является динамическим языком, поэтому вы не можете создавать классы динамически, но термин «создать» не вполне определен в вашем вопросе.

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

и т. Д.

Если вы хотите создать файл класса в JVMво время выполнения вы, возможно, захотите взглянуть на более динамические языки, способные работать в JVM, таких как Groovy, JRuby и т. д. Groovy обладает довольно неплохими динамическими возможностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...