java - 具有 StringBuffer 属性的编码对象

标签 java jaxb

当通过具有 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/

相关文章:

java - 实用程序类静态方法和继承

java - JAXB 实现

java - 在运行时从 XML 构建对象的最佳方法

java - 向@XmlElement 添加计数约束?

java - 如何将一个字符串分成多个部分?

java - 以编程方式列出 jar 中的所有公共(public)类

java - java中mongo数据库中所有集合的列表

java - 从 WSDL 使用 jaxb2-maven-plugin 生成类

java - JAX-B 正在编码一切

java - 如何说服 Java 构造函数接受包含其类实现特定接口(interface)的对象的列表