Примечание: Я EclipseLink JAXB (MOXy) и являюсь членом JAXB 2 (JSR-222) экспертная группа.
Этот вариант использования поддерживается MOXy, и IMHO должен поддерживаться также JAXB RI:
Простой
Этот класс имеет поле, сопоставленное с @XmlValue
и расширяемое OtherClass
:
package forum809827;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlValue;
@XmlRootElement(name="simple")
class Simple extends OtherClass {
@XmlValue
// @XmlValueExtension
// As of moxy 2.6, XmlValueExtension needs to be added for this to work
public String contents;
}
OtherClass
Это супер класс.В MOXy подкласс может сопоставить поле / свойство с @XmlValue
, если у суперкласса нет сопоставлений с элементом XML:
package forum809827;
import javax.xml.bind.annotation.XmlAttribute;
public class OtherClass {
@XmlAttribute
public String other;
}
Demo
package forum809827;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Simple.class);
Simple simple = new Simple();
simple.contents = "FOO";
simple.other = "BAR";
Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(simple, System.out);
}
}
Выход
<?xml version="1.0" encoding="UTF-8"?>
<simple xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" other="BAR">FOO</simple>
Для получения дополнительной информации об указании MOXy в качестве поставщика JAXB