出于某种原因,一个元素的所有值都会被写入两次。我的测试用例很简单:
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
感谢您的任何提示。