【问题标题】:Can we create a class from a xml file?我们可以从 xml 文件创建一个类吗?
【发布时间】:2010-05-06 00:43:54
【问题描述】:

是否可以通过读取 xml 文件(最好在 java 中)来动态创建类?如果是,请提供有关如何操作的指示。

在开发过程中,我们提出了一个有5个属性的类,所有这些属性都对应xml文件中的一个条目,现在如果用户添加/修改xml条目对应的对象必须改变自动,一种方法是在编译之前生成源代码。还有其他方法吗?

是否有任何通用模式可以对系统中的此类变化进行建模?

谢谢,

【问题讨论】:

    标签: java design-patterns oop object


    【解决方案1】:

    如果您的 XML 有一个 XML Schema,那么有很多工具包可以用于此。从 JAX-B 开始。

    【讨论】:

    • 感谢您提供的信息,我正在处理它。就在我阅读整个文档之前,我有一个快速的问题:目前,我已经有一个跨模块使用的静态类声明,JAX-B 将为我做什么?它会用它在运行时生成的类替换静态编译时类吗?谢谢
    • 您可以告诉 JAXB 从 XSD 生成 Java 源文件,或者相反,或者您可以乱用 @annotations 直到它们收敛。
    【解决方案2】:

    如果您将属性存储在 HashMap 中,那么您可以简单地解析 XML,然后相应地设置属性。

    【讨论】:

      【解决方案3】:

      假设您有一个 XML 模式 (xsd),您可以将该模式提供给 JAXB 的 xjc 命令以生成 Java 类。 xjc 包含在 Java 6 JDK 中。

      【讨论】:

        【解决方案4】:

        该过程通常以相反的方式工作(即定义具有这些属性的类,并将该类的实例序列化为 XML)

        如果您真的需要这种灵活性,脚本语言会为您省去很多麻烦。

        【讨论】:

          【解决方案5】:

          我认为JAX-B 可以提供这样的功能。

          【讨论】:

            【解决方案6】:

            如果您正在寻找字节码生成,请查看cglib,它是在 Hibernate 中使用的。

            但也许一些注解也可以满足你的要求,就像 Google Guice 的依赖注入一样。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-03-31
              • 1970-01-01
              • 2019-09-27
              • 1970-01-01
              • 2019-11-27
              • 1970-01-01
              • 2021-07-24
              相关资源
              最近更新 更多