Java 用JAXB存根元素的简单方法?
我刚刚开始学习使用JAXB将java对象编组为XML。序列化对象没有问题,但现在我要做的是在xml中插入一个元素,而该元素没有对应的POJOJava 用JAXB存根元素的简单方法?,java,jaxb,Java,Jaxb,我刚刚开始学习使用JAXB将java对象编组为XML。序列化对象没有问题,但现在我要做的是在xml中插入一个元素,而该元素没有对应的POJO 例如,我有一个文件夹的列表,我想将每个文件夹放入一个名为文件夹的xml元素中。这有意义吗?我可以在适当的情况下将和写入输出流,但我希望以更正式的方式执行此操作。您可以使用JAXB和StAX来执行此操作。使用XMLStreamWriter将有助于规范与XML的交互,并使您能够更好地控制此类编码: package forum8406266; import j
例如,我有一个
文件夹
的列表,我想将每个文件夹
放入一个名为文件夹
的xml元素中。这有意义吗?我可以在适当的情况下将
和
写入输出流,但我希望以更正式的方式执行此操作。您可以使用JAXB和StAX来执行此操作。使用XMLStreamWriter
将有助于规范与XML的交互,并使您能够更好地控制此类编码:
package forum8406266;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Folder.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
List<Folder> folders = new ArrayList<Folder>(3);
folders.add(new Folder());
folders.add(new Folder());
folders.add(new Folder());
XMLOutputFactory xof = XMLOutputFactory.newFactory();
XMLStreamWriter xsw = xof.createXMLStreamWriter(System.out);
xsw.writeStartDocument();
xsw.writeStartElement("Folders");
for(Folder folder : folders) {
marshaller.marshal(folder, xsw);
}
xsw.writeEndElement();
xsw.writeEndDocument();
xsw.flush();
}
}
您可以使用JAXB和StAX来完成这项工作。使用
XMLStreamWriter
将有助于规范与XML的交互,并使您能够更好地控制此类编码:
package forum8406266;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Folder.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
List<Folder> folders = new ArrayList<Folder>(3);
folders.add(new Folder());
folders.add(new Folder());
folders.add(new Folder());
XMLOutputFactory xof = XMLOutputFactory.newFactory();
XMLStreamWriter xsw = xof.createXMLStreamWriter(System.out);
xsw.writeStartDocument();
xsw.writeStartElement("Folders");
for(Folder folder : folders) {
marshaller.marshal(folder, xsw);
}
xsw.writeEndElement();
xsw.writeEndDocument();
xsw.flush();
}
}
这很有效,谢谢。每次调用
封送
,我都会得到一个无关的
,但这可能是一个不同的问题。您需要确保在封送器上设置JAXB_片段属性。这很好,谢谢。每次调用封送
,我都会得到一个无关的
,但这可能是一个不同的问题。您需要确保在封送器上设置JAXB_FRAGMENT属性。