По какой-то причине все значения элемента записываются дважды.Мой тестовый пример очень прост:
package test;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name="root")
public class TestBean {
private String name = null;
@XmlElement(name="lastname")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Затем я собираю документ в файловую систему в XML:
TestBean object = new TestBean();
object.setName("abc ");
Class<?> clazz = object.getClass();
JAXBContext context = JAXBContext.newInstance(clazz);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE );
m.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
m.marshal(object, new File("test.xml"));
И получается XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<lastname>abc abc </lastname>
</root>
Для простоты я удалил файл package-info.java с определениями пространства имен.
Я использую реализацию org.eclipse.persistence.moxy 2.1.2: файл jaxb.properties в папке пакетасодержит эту строку:
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
Спасибо за любые подсказки.