JAXB - 如何在没有标题的情况下编组java对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAXB - 如何在没有标题的情况下编组java对象相关的知识,希望对你有一定的参考价值。
我正在尝试编组一个java对象,但我想删除Jaxb引入的头文件。
宾语:
@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")
以上是关于JAXB - 如何在没有标题的情况下编组java对象的主要内容,如果未能解决你的问题,请参考以下文章
带有 java.lang.Object 字段的 JAXB 编组对象
在 JaxB 编组没有 @XmlRootElement 注释的元素时删除 ns2 前缀