如何使用JAXB封送多个对象?

如何使用JAXB封送多个对象?,第1张

如何使用JAXB封送多个对象?

默认情况下,JAXB(JSR-222)实现检查公共访问器方法。您可以在get / set方法中将

Book
参数添加到
List

public List<Book> getBookslst() {    return bookslst;}public void setBookslst(List<Book> bookslst) {    this.bookslst = bookslst;}

或者,您可以使用

@XmlElement
注释指定属性的类型:

@XmlElement(type=Book.class)public List getBookslst() {    return bookslst;}

您还可以指定JAXB实现对字段而不是属性进行内部检查:

@XmlRootElement(name="lists")@XmlAccessorType(XmlAccessType.FIELD)public class BookLists {    List<Book> bookslst;}

更新

在Marshallar.Marshall中,有没有其他方法可以添加List而不是BookList?

您可以创建一个利用

@XmlAnyElement(lax=true)
注释的通用List包装器对象(请参阅:http : //blog.bdoughan.com/2010/08/using-
xmlanyelement-to-build-generic.html
)。然后它冷处理
List
任何带有注释的内容
@XmlRootElement

清单

package forum12323397;import java.util.ArrayList;import java.util.List;import javax.xml.bind.annotation.*;@XmlRootElementpublic class Lists<VALUE> {    private List<VALUE> values = new ArrayList<VALUE>();    @XmlAnyElement(lax=true)    public List<VALUE> getValues() {        return values;    }}

演示版

package forum12323397;import javax.xml.bind.*;public class Demo {    public static void main(String[] args) throws Exception {        JAXBContext jc = JAXBContext.newInstance(Lists.class, Book.class);        Lists<Book> lists = new Lists<Book>();        Book book1 = new Book();        book1.setTitle("A Book");        book1.setYear(2001);        lists.getValues().add(book1);        Book book2 = new Book();        book2.setTitle("Another Book");        book2.setYear(2007);        lists.getValues().add(book2);        Marshaller marshaller = jc.createMarshaller();        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);        marshaller.marshal(lists, System.out);    }}

输出量

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><lists>    <book>        <title>A Book</title>        <year>2001</year>    </book>    <book>        <title>Another Book</title>        <year>2007</year>    </book></lists>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5490011.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存