これを行うには、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プロパティを設定する必要があります。 –