【问题标题】:Mapping JAXB data to a Domain Model将 JAXB 数据映射到域模型
【发布时间】:2011-07-15 08:28:51
【问题描述】:

我从 Web 服务调用中获得 InputStream,并使用 JAXB 将其转换为对象,因此我不必解析 xml。

对象包含一堆我不感兴趣的数据,而我关心的数据中,我想实例化一个自定义域模型类型对象。 例如,JAXB 对象包含大约 50 条数据,分布在大约 20 个类中。 我想挑选我关心的数据,大约 10 条数据,并用这 10 条数据实例化我的领域模型类。

我必须使用 Java 1.4,有没有我可以使用的框架,还是应该只遍历 JAXB 对象并获取我关心的数据,然后实例化域模型并设置数据?

【问题讨论】:

  • 你在使用 JAXB 1 impl 和 JDK 1.4 吗?
  • 如何知道我使用的是哪个 JAXB 版本?
  • 找到它,使用 JAXB 1.3
  • 这是要考虑的事情:Dozer??

标签: xml mapping jaxb


【解决方案1】:

编写一些自定义 XPath 查询来提取您想要的字段将是相当干净和简单的。您可以将 XPath 作为 xalan 的一部分或我相信的一堆其他 xml 库:API Link

为了澄清(如果您以前没有使用过 XPath),XPath 允许您编写一个简单的路径查询来搜索 xml 文档。所以root/child/grandchild/ 将返回孙节点的值,该孙节点位于子节点下方,子节点位于根节点下方。

【讨论】:

    【解决方案2】:

    使用 JAXB 1.0

    您可以将 XSLT 转换应用到文档中,只针对您关心的信息。然后您可以为这个较小的文档创建一个 XML 模式并从中生成您的对象模型。我在下面对相关问题的回答将使您了解 javax.xml.transform API 如何适应:

    使用 JAXB 2.0

    如果您能够升级到 Java SE 5,那么您可以利用 JAXB 2.0。我领导 EclipseLink JAXB (MOXy) 实现,您可能对我们的 XPath 扩展感兴趣:

    【讨论】:

    • 非常有趣的想法,我想我会研究一下改造想法,因为我目前无法升级
    猜你喜欢
    • 2015-11-12
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多