在Java中动态创建类

时间:2012-10-08 18:50:16

标签: java dynamic reflection xml-parsing

  

可能重复:
  Dynamically create classes in Java

我在Java中有关于Reflection概念的查询。

我正在尝试用Java创建一个SAX XML解析器。需要做的是我需要根据XML创建一个包含字段的新类,并在解析时使用该类。 但是这种方法对于所选择的XML非常具体。

我在思考的是,是否有任何方法可以编写适用于所有可能的XML的XML(SAX)解析器?即,我需要动态创建一个包含在XML中的字段的类,并使用相同的类来解析XML文件。

我希望我能清楚地提出我的问题。

感谢。

1 个答案:

答案 0 :(得分:0)

之前我有类似的情况,但我的xml解析器需要一些配置。 我的方法是:a)解析引擎,b)配置。

配置部分围绕要通过属性传递的XPath表达式构建。 这些是静态XPath表达式,如果输入xml消息发生更改,则需要更新。

解析引擎部分执行这些表达式来查询xml元素,属性等以填充java对象。

修改

例如,给定的xml(简化,无命名空间):

<msg>
    <something>
        <somenode>
            <version>1.0.0</version>
        </somenode>
    </something>
</msg>

代码示例:(简化)

String myXpExpr = "//version/text()";  // make it .properties
Document xmlDocument = DocumentBulderFactory.newInstance().newDocumentBuilder().parse(xmlInputStream);
XPath xpXPath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpXPath.compile(myXpExpr);
resultObject = expr.evaluate(xmlDocument, returnTypeQName); 

这会给你“1.0.0”作为resultObject。