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

时间:2017-01-11 15:14:04

标签: java xml jaxb

我尝试从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); 哪个产生 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 虽然我想在里面有书籍元素

1 个答案:

答案 0 :(得分:0)

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

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

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