当前位置: 首页 > 知识库问答 >
问题:

JAXB:解组具有相同值的不同XML元素

嵇财
2023-03-14

有太多关于大致相同主题的问题,但我找不到我想要的。如果我错过了,我很抱歉。

我正在尝试散集具有公共逻辑元素但使用不同标记定义的XML文件:

<xml>
  <animals>
    <dog>
      <bark>loud</bark>
    </dog>
    <cat>
      <meow>frail</meow>
    </cat>      
  </animals>
</xml>

两个<代码>

我可以这样做:

public abstract class Animal {

    public abstract String getVolume();

}

所需要的只是在猫.java.java中实现getVolume(),并分别返回这个树皮这个喵喵

然而,在Animal.java中有一个属性并以某种方式告诉JAXB将这两个字段映射到它似乎更简单。

我是不是想多了?你将如何实现它?

(当然,我无法控制输入XML。如果可能的话,我还想避免使用MOXy的解决方案,因为推动对该项目的另一个依赖可能会很困难。)

共有2个答案

伏默
2023-03-14

JAXB实际上有几种多态机制。您可以使用< code > @ XmlDescriminatorNode /< code > @ XmlDescrimintatorValue (Eclipse MOXy)或替换组。

以下是一些细节和代码示例:替换组、去犯罪者

牟飞沉
2023-03-14

您将需要:

    < li >将< code>Animal类标记为< code>@XmlTransient以将其作为映射类移除。 < li >在对其进行注释的每个子类中覆盖< code>getVolume()方法,以匹配该类所需的元素。

对于这个特定的模型,我的偏好是每个动物都有一个< code>volume元素

 类似资料:
  • 我有下面的xml结构: 有不同的 Field(X) 包装器元素,它们包含相同的用户元素。XML 中可以发送 n 个字段。因此,我不能为每个单独的Jaxb。我需要访问用户,但在取消编组步骤后忽略 Field 元素。不幸的是,我无权更改xml结构。我无法找到解决方案。任何指针都会有所帮助。

  • 您好帮助请把xml文件放在里面一些相同的元素,这些元素的内容不同,“name”属性。这些元素有不同的项目集,如何进行解咒?断续器: 我需要在Cdb和FmssSc中执行对象2的解组。我的尝试:通用元素-ServiceBroker.class 适配器.class Cdb.class FmssSc.class 演示: 错误:

  • 我有这种结构的xml文件: 有没有可能将这种XML解组到一个对象中。问题是每个元素都有一些独特的标签。我想把这些值放到列表中,但是我不知道怎么做。

  • 我从 3 个不同的客户端收到 3 个不同的 xml 输入: 来自客户端1的输入1:(命名空间前缀:,命名空间url:) 来自客户端 2 的输入 2:(命名空间前缀:,命名空间 URL:) 从客户端3输入3:(名称空间前缀: 时,< li >调用< code>String.replace() 这让我想到这种变量命名空间的方法是否应该完全可以接受。如果有什么可以改进此代码的方法,那么我要求社区在答案/

  • 我正在尝试解组一个包含多个同名元素的XML文档。我不确定是否需要创建bean的Arraylist并将其传递给解组器。我希望有人能给我一些建议来解决这个问题。我试图解析的XML是一个SOAP响应,但我去掉了信封,所以我只有它的主体,它看起来是这样的: 这是从一个包含50多个字段的表返回的,但我创建了一个testBean,并且我定义了fkdevice只是为了使其简单,我的bean看起来像这样: 这给了

  • 我认为这对真正理解JAXB绑定文件的人来说很容易... 如何配置JAXB将多个元素解组到同一个类中? 注意:我想避免在我的项目中添加另一个依赖项(比如MOXy)。理想情况下,这可以通过注释或自定义绑定文件来实现。 我有一个XML文档,其中包含许多相同元素的变体——每个元素都有完全相同的属性。使用下面的示例,我只关心“员工”,但XML指定了“董事、经理和员工”。为了我们的目的,这些都是同一个父类的子