jaxb不要元帅属性
我有一些由Jaxb Mave插件生成的类:
@XmlType
@XmlRootElement(name = "Foo", namespace = "urn://some-urn")
public class Foo {
@XmlAttribute(name = "id", required = true)
protected String id;
@XmlAttribute(name = "name", required = true)
protected BigInteger name;
@XmlAttribute(name = "age", required = true)
protected String age;
我需要从该类中元使用对象,但是JAXB将属性作为一个元素。
必要:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:Foo xmlns:ns2="urn://some-urn" id="1" name="Boris" age="43">
//some elements in the root element
</ns2:Foo>
提供:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:Foo xmlns:ns2="urn://some-urn">
<id>1</id>
<name>Boris</name>
<age>43</age>
</ns2:Foo>
编组方法:
public String marshalToXml(Foo foo) {
StringWriter stringWriter = new StringWriter();
try {
Marshaller marshaller = JAXBContext.newInstance(Foo.class).createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
QName qName = new QName("urn://some-urn",
"Foo");
JAXBElement<Foo> bar = new JAXBElement<>(qName, Foo.class, foo);
marshaller.marshal(bar, stringWriter);
return stringWriter.toString();
} catch (JAXBException e) {
log.error(e.getMessage(), e);
}
return null;
}
I have some class generated by jaxb mave plugin like this:
@XmlType
@XmlRootElement(name = "Foo", namespace = "urn://some-urn")
public class Foo {
@XmlAttribute(name = "id", required = true)
protected String id;
@XmlAttribute(name = "name", required = true)
protected BigInteger name;
@XmlAttribute(name = "age", required = true)
protected String age;
I need to marshal object from this class, but JAXB marshaling attributes as an elements.
Required:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:Foo xmlns:ns2="urn://some-urn" id="1" name="Boris" age="43">
//some elements in the root element
</ns2:Foo>
Provided:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:Foo xmlns:ns2="urn://some-urn">
<id>1</id>
<name>Boris</name>
<age>43</age>
</ns2:Foo>
Marshalling method:
public String marshalToXml(Foo foo) {
StringWriter stringWriter = new StringWriter();
try {
Marshaller marshaller = JAXBContext.newInstance(Foo.class).createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
QName qName = new QName("urn://some-urn",
"Foo");
JAXBElement<Foo> bar = new JAXBElement<>(qName, Foo.class, foo);
marshaller.marshal(bar, stringWriter);
return stringWriter.toString();
} catch (JAXBException e) {
log.error(e.getMessage(), e);
}
return null;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论