java - JAXB - 如何在没有 header 的情况下编码(marshal) Java 对象

标签 java xml jaxb marshalling

我正在尝试编码(marshal) java 对象,但我想删除 Jaxb 引入的 header 。

对象:

@XmlRootElement
public class FormElement implements Serializable {
    private String id;
    private String name;
    private Integer order;
}

预期输出:

<element>
    <id>asd</id>
    <name>asd</name>
    <order>1</order>
</element>

我的输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<formElement>
  <id>asd</id>
  <name>asd</name>
  <order>1</order>
</formElement>

我的编码方法:

public String marshal() {
        JAXBContext context;
        try {
            context = JAXBContext.newInstance(FormElement.class);
            Marshaller marshaller = context.createMarshaller();
            StringWriter stringWriter = new StringWriter();
            marshaller.marshal(this, stringWriter);
            return stringWriter.toString();
        } catch (JAXBException e) {
        }
        return null;
    }

如何删除它?

提前致谢。

最佳答案

我已经使用它解决了

marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);

并将 (name = "element") 添加到 @XmlRootElement 注释中。

正确的方法:

public String marshal() {
    JAXBContext context;
    try {
        context = JAXBContext.newInstance(FormElement.class);
        Marshaller marshaller = context.createMarshaller();
        StringWriter stringWriter = new StringWriter();
        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
        marshaller.marshal(this, stringWriter);
        return stringWriter.toString();
    } catch (JAXBException e) {
        String mess = "Error marshalling FormElement " + e.getMessage()
                + (e.getCause() != null ? ". " + e.getCause() : " ");
        System.out.println(mess);
    }
    return null;
}

正确的注释:

@XmlRootElement(name = "element")

关于java - JAXB - 如何在没有 header 的情况下编码(marshal) Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45714224/

相关文章:

java - OpenGL ES 2.0 : glGetAttribLocation returns -1. 着色器优化?

java - EditText 中的 maxLength 属性无法通过 xml 和 java 正常工作

Java XSLT 输出在浏览器中错误地显示 A0、B7 字符

java - 使用 JAXB 和 XMLStreamReader 高效地解码大型 xml 文件的一部分

java - JAXB 2 Maven 插件 - 强制生成 java 源代码,以使用子集合?

java - Android butterknife 多重分包

javagent 需要一个 jar。如何使用 Gradle 进行构建和测试?

xml - Eclipse XSD Content Assist,没有注释?

java - package-info.java 是如何工作的?

java - jsp页面中这两种方法的区别