由於某些原因,元素的所有值都會被寫入兩次。 我的測試用例是很簡單的:JAXB 2.x:編組將元素值放入XML中兩次
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
感謝您的任何提示。
好的,昨天我通過使用XmlAccessType.FIELD應用了一種解決方法,它按預期工作。 – basZero 2011-01-28 07:42:03
嗨Blaise,有沒有一個RSS訂閱我可以訂閱,以便知道什麼時候2.3.0獲得最終?每晚構建不是生產系統的候選人。 – basZero 2011-01-28 07:55:43