[英]JAXB - How to marshal java object without header
I'm trying to marshal a java object but I want to remove the header that Jaxb is introducing. 我试图封送一个Java对象,但我想删除Jaxb引入的标头。
Object: 宾语:
@XmlRootElement
public class FormElement implements Serializable {
private String id;
private String name;
private Integer order;
}
Expected output: 预期产量:
<element>
<id>asd</id>
<name>asd</name>
<order>1</order>
</element>
My output: 我的输出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<formElement>
<id>asd</id>
<name>asd</name>
<order>1</order>
</formElement>
My marshal method: 我的元帅方法:
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;
}
How can I remove it? 如何删除?
Thanks in advance. 提前致谢。
I have solved it using 我已经解决了
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
and adding (name = "element")
to the @XmlRootElement
annotation. 并将(name = "element")
到@XmlRootElement
批注。
The correct method: 正确的方法:
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;
}
And the correct annotation: 以及正确的注释:
@XmlRootElement(name = "element")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.