StAX와 함께 JAXB를 사용할 수 있습니다. 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();
}
}
위의 코드는 Folder
클래스가 @XmlRootElement
의 주석을 붙일 수 있다고 가정합니다
package forum8406266;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="Folder")
public class Folder {
}
이 작품을 음, 고마워. 나는 마샬 (marshal)을 호출 할 때마다 불필요한' xml version = "1.0"?>'을 얻는다. 그러나 이것은 아마도 다른 문제 일 것이다. –
Marshaller에서 JAXB_FRAGMENT 특성을 설정해야합니다. –