StAX(JSR-173) を使用してXMLドキュメントを解析できます( XMLStreamReader
JavaSE6以降の実装はJDK/JREに含まれています)。次に、それを進めて各watermark
要素に進み、 JAXB(JSR-222)にそれをアンマーシャリングさせることができます。
デモ
Watermark
クラスに注釈が付けられていると仮定すると@XmlRootElement
、次のことができます。
import javax.xml.bind.*;
import javax.xml.stream.*;
import javax.xml.transform.stream.StreamSource;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Watermark.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
StreamSource source = new StreamSource("input.xml");
XMLInputFactory xif = XMLInputFactory.newFactory();
XMLStreamReader xsr = xif.createXMLStreamReader(source);
xsr.nextTag(); // Advance to "watermarks" element
xsr.nextTag(); // Advance to "watermark" element
while(xsr.getLocalName().equals("watermark")) {
Watermark object = (Watermark) unmarshaller.unmarshal(xsr);
System.out.println(object);
xsr.nextTag();
}
}
}
完全な例
ジェネリックリストラッパークラス
以下の質問に対する私の回答では、役立つと思われる汎用リストラッパークラスの例を示しました。