当通过具有 StringBuffer 属性的 JAXB 编码(marshal)对象时,该属性变为空白。我写了一个小程序来演示这个问题:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class JaxbTest {
private String valueOne;
private StringBuffer valueTwo;
public static void main(String[] args) throws Exception {
JaxbTest object = new JaxbTest();
object.setValueOne("12345");
object.setValueTwo(new StringBuffer("54321"));
JAXBContext context = JAXBContext.newInstance(JaxbTest.class);
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(object, System.out);
}
@XmlElement
public String getValueOne() {
return valueOne;
}
public void setValueOne(String valueOne) {
this.valueOne = valueOne;
}
@XmlElement
public StringBuffer getValueTwo() {
return valueTwo;
}
public void setValueTwo(StringBuffer valueTwo) {
this.valueTwo = valueTwo;
}
}
输出如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><jaxbTest><valueOne>12345</valueOne><valueTwo/></jaxbTest>
有谁知道为什么“valueTwo”没有被正确编码?顺便说一句,我使用的是 java 1.6.0_22。
提前致谢!!!
最佳答案
对于这个用例,我建议使用 JAXB 的 XmlAdapter:
关于java - 具有 StringBuffer 属性的编码对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5093562/