繁体   English   中英

如何使用带有命名空间的JAXB创建xml

[英]How to create xml using JAXB with namespace

我正在尝试从java对象创建XML,它实际上是List<MyElem> MyElem对象本身可以编组,尽管我无法编组这些对象的列表-想到的解决方案之一是创建另一个类来包装该列表,但这看起来很难看。 有没有更优雅的方式?

还有另一个问题-是否有一种方法可以为每个元素(例如<n:elem>some val</n:elem>提供模式前缀,而无需在每个属性上都指定它?

UPD :在第二个问题中,我的意思是,如果我拥有诸如public String element之类的属性,它将被编组为<elem>some val</elem>而我希望它(以及其他所有属性)都以n:作为前缀,例如<n:elem>

让我为第一个提供代码: List<Book> list = new ArrayList<>(); JAXBContext context = JAXBContext.newInstance(Book.class); Marshaller jaxbMarshaller = context.createMarshaller(); jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); list.add(new Book()); list.add(new Book()); jaxbMarshaller.marshal(list, writer); List<Book> list = new ArrayList<>(); JAXBContext context = JAXBContext.newInstance(Book.class); Marshaller jaxbMarshaller = context.createMarshaller(); jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); list.add(new Book()); list.add(new Book()); jaxbMarshaller.marshal(list, writer); 当我想在内部包含书本元素时,生成<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

您可以将java.util.List指定为如下所示。

   @XmlElement(name="myElem")
    List<MyElem> flexField;

    public List<MyElem> getMyElem() {
        if(myElem == null) {
            myElem = new ArrayList<MyElem>();
        }
        return this.myElem;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM