Это не совсем то, что вам нужно, но вы можете использовать @XmlAnyElement
для демарширования неизвестных типов в качестве элементов DOM.
Рассмотрим класс Customer
с полем extras
помечены всеобъемлющим @XmlAnyElement
.
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlElement
private String name;
@XmlAnyElement
private List<Element> extras = new ArrayList<Element>();
public String getName() {
return name;
}
public List<Element> getExtras() {
return extras;
}
}
Образец xml:
<?xml version="1.0" encoding="UTF-8"?>
<customer>
<name>John Doe</name>
<salary>1000</salary>
<age>45</age>
</customer>
Salary
и Age
являются неизвестными типами и сохраняются в нашем списке дополнений, когдамы демаршируем:
JAXBContext jc = JAXBContext.newInstance(Customer.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Customer customer = (Customer) unmarshaller.unmarshal(reader);
System.out.println(customer.getName());
for (Element el : customer.getExtras()) {
System.out.println(el.getNodeName() + "->"
+ el.getTextContent());
Вывод:
John Doe
salary->1000
age->45