如何在 apache camel 中解组 XML 文件

How to unmarshal XML file in apache camel

我有两个 类 ItemsDto 和 ItemDto 它们代表来自 XML 文件

的数据

@XmlR

ootElement(name = "items")
@XmlAccessorType(XmlAccessType.FIELD)
public class ItemsDto {

    @XmlElementRef
    private List<ItemDto> items;

    public List<ItemDto> getItems() {
        return items;
    }

    public void setItems(List<ItemDto> items) {
        this.items = items;
    }
}

还有一个

@XmlRootElement(name = "item")
@XmlAccessorType(XmlAccessType.FIELD)
public class ItemDto {

    @XmlElement
    private int itemNo;
    @XmlElement
    private String name;
    @XmlElement
    private String description;
    @XmlElement
    private int number;
    @XmlElement
    private int rating;

    public ItemDto() {
    }

    public ItemDto(int itemNo, String name, String description, int number) {
        this.itemNo = itemNo;
        this.name = name;
        this.description = description;
        this.number = number;
    }

    //getters and setters

}

我有 test.xml 个文件

<items>
  <item>
    <itemNo>998</itemNo>
    <name>Rider Auto Part Generic Brakepad</name>
    <description>Basic brakepad for any motorbike</description>
    <number>100</number>
  </item>
</items>

我想设置一个从文件中读取的路径,但我不知道如何设置解组部分 我不知道该怎么办...

from("file:inputXML")
.unmarshal().  something
.process(exchange -> {
   System.out.println(exchange.getIn().getBody());
  })
    unmarshal(new JaxbDataFormat(JAXBContext.newInstance(ItemsDto.class))).process(e-> exchange.getIn().getBody(ItemsDto.class);)

之后你可以在处理器

中使用这个class