2015-08-20 2 views
0

Я ищу простое решение.Java XML динамический парсер

У меня есть XML-файл:

<properties> 
    <property> 
     <class>java.lang.String</class> 
     <value>String value...</value> 
    </property> 
    <property> 
     <class>java.lang.Boolean</class> 
     <value>true</value> 
    </property> 
    <!-- ... others java lang wrapper class --> 
</properties> 

Я хотел бы сделать динамический анализатор.

Я знаю, что могу читать xml с org.w3c.dom. * И org.w3c.dom.Node.getTextContent() Я могу получить значение тега.

Class<?> clazz = Class.forName(classTextContent); 
// How to convert value to specific clazz? 
// if/else (clazz)? Does not look a nice answer. 

Любое предложение?

[Изменено] По отражению:

переменный "clazz" является java.lang.Class, верно? Как преобразовать значение textContent (в String) в любой тип обертки?

Object objectValue = null; 
Class<?> clazz = Class.forName(nodeClass.getTextContent()); 
String value = nodeValue.getTextContent(); 
if (clazz.equals(Boolean.class) { objectValue = Boolean.valueOf(value) } 

valueOf может быть общий метод, который я мог бы назвать с помощью отражения ... Integer, Float, Boolean, Long, Double поддержку valueOf.

Другой способ?

+0

Отражение Ваш ответ: https://docs.oracle.com/javase/tutorial/reflect/ – Emd4600

ответ

0
Object object = YourClass.class.getConstructor(new Class<?>[]{}).newInstance(); 

// if you want to use a constructor, let's say, for YourClass(int name, int id) 

Object object = YourClass.class.getConstructor(new Class<?>[]{int.class, int.class}).newInstance(desiredName, desiredId); 
+0

Emd4600, пожалуйста, посмотрите в мой отредактированной вопрос. Спасибо –

+0

Не знаю, насколько я знаю. Вы можете использовать этот http://stackoverflow.com/a/16172206/3779214, чтобы пользователь указал поле для заполнения значением. – Emd4600

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