小编Cor*_*y G的帖子

使用JAXB XmlAdapter在没有包装元素的情况下调整整个列表

我正在尝试使用一个XmlAdapterunmarshal XML到一个自定义集合类型(Collection由于另一个类的使用所施加的冲突限制,故意不实现接口,如果该类包含任何集合,这很可能会失败).难点在于XML放置在集合中的节点不会包装在包装元素中.

这是我的XML基本面貌:

<xml>
  <foo></foo>
  <bar>1</bar>
  <bar>2</bar>
</xml>
Run Code Online (Sandbox Code Playgroud)

我可以JAXB解决以下问题POJO:

class Naive {
  Foo foo;
  List<Bar> bar;
}
Run Code Online (Sandbox Code Playgroud)

但是,我想要做的是以下内容:

class Bars {
  // There will be a fixed number of these, known in advance
  Bar bar1;
  Bar bar2; 
}

class BarsAdapter extends XmlAdapter<ArrayList<Bar>, Bars> {
  ...
}

class Custom {
  Foo foo;
  @XmlJavaTypeAdapter(BarsAdapter.class)  // won't work
  Bars bar;
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我编写了一个XmlAdapter想要调整整个列表的内容,而不是单个元素,但它从不会被调用以进行解组.(它会被调用以进行编组.)

如果我XML<bar>元素周围包含一个包装器,那么我知道如何解决这个问题:

<xml> …
Run Code Online (Sandbox Code Playgroud)

java xml jaxb unmarshalling xmladapter

5
推荐指数
0
解决办法
1000
查看次数

标签 统计

java ×1

jaxb ×1

unmarshalling ×1

xml ×1

xmladapter ×1