如何通过从xml文件中读取字段名和类型,通过反射创建java对象?

如何通过从xml文件中读取字段名和类型,通过反射创建java对象?,java,reflection,Java,Reflection,我想通过从xml文件中读取字段名及其类型,在运行时动态创建一个类。例如,我的xml文件如下所示: <person> <name type="String">abc</name> <age type="Integer">30</age> </person> abc 30 我还希望每个字段都有getter和setter方法 是否有任何示例或最佳方法可用于此?请看,从XML序列化到XML非常容易。请看,从XML序

我想通过从xml文件中读取字段名及其类型,在运行时动态创建一个类。例如,我的xml文件如下所示:

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

abc
30
我还希望每个字段都有getter和setter方法


是否有任何示例或最佳方法可用于此?

请看,从XML序列化到XML非常容易。

请看,从XML序列化到XML非常容易。

这在技术上是可能的,但是(除非有人指出现有的解决方案),这将是一项大量工作。(例如,通过生成源代码并在运行时编译,您可以做很多聪明的事情。)

但老实说,这可能不是一件有用的事情。一旦您将XML对象作为一个全新Java类的实例加载,您将很难使用它。首先,现有的静态编译应用程序将只能以反射方式访问新类的字段和方法

在我看来,最好将XML加载到通用的
Map
对象或
Properties
对象中。或者,只使用由现成的XML解析器创建的DOM


或者,获取XML的DTD、XSD或其他某种“模式”,并从中生成Java类。然后可以编写并静态编译应用程序来调用这些类。

这在技术上是可能的,但是(除非有人指出现有的解决方案),这将是一项大量的工作。(例如,通过生成源代码并在运行时编译,您可以做很多聪明的事情。)

但老实说,这可能不是一件有用的事情。一旦您将XML对象作为一个全新Java类的实例加载,您将很难使用它。首先,现有的静态编译应用程序将只能以反射方式访问新类的字段和方法

在我看来,最好将XML加载到通用的
Map
对象或
Properties
对象中。或者,只使用由现成的XML解析器创建的DOM


或者,获取XML的DTD、XSD或其他某种“模式”,并从中生成Java类。然后可以编写并静态编译应用程序来调用这些类。

Java不是一种动态语言,因此您无法动态创建类,但术语“创建”在您的问题中没有很好的定义

如果您的意思是实例化和初始化,那么可以通过使用以下库进行序列化来轻松实现:

  • jaxb.dev.java.net/
  • www.castor.org/
  • jibx.sourceforge.net/
等等


如果你想在运行时在JVM中创建一个类文件,你可能想看看能够在JVM中运行的更动态的语言,比如Groovy或JRuby等。Groovy有一些非常酷的功能。

Java不是动态语言,所以你不能动态创建类,但是“创建”一词在你的问题中没有很好的定义

如果您的意思是实例化和初始化,那么可以通过使用以下库进行序列化来轻松实现:

  • jaxb.dev.java.net/
  • www.castor.org/
  • jibx.sourceforge.net/
等等


如果您的意思是希望在运行时在JVM中实际创建一个类文件,那么您可能希望了解能够在诸如Groovy或JRuby之类的JVM中运行的更动态的语言,Groovy有一些非常酷的功能。

我认为他希望能够构造Java对象,即使他的代码以前从未听说过最初的序列化类。我认为他希望能够构造Java对象,即使他的代码以前从未听说过最初的序列化类。