標準APIを使用してこれを行うにはいくつかの方法があります。 (冗長性とファクトリパターンについて、独自の警告を挿入します。)
あなたがデータエンコードするためにXMLStreamWriterを使用することができます:あなたが構築DOM document(推奨しない)とすることを放射する、または可能性があり、また
XMLOutputFactory factory = XMLOutputFactory
.newInstance();
XMLStreamWriter writer = factory.createXMLStreamWriter(
stream, "UTF-8");
try {
writer.writeStartDocument("UTF-8", "1.0");
writer.writeStartElement("pie");
for (Entry<String, String> entry : map.entrySet()) {
writer.writeStartElement("slice");
writer.writeAttribute("title", entry.getKey());
writer.writeCharacters(entry.getValue());
writer.writeEndElement();
}
writer.writeEndElement();
writer.writeEndDocument();
} finally {
writer.close();
}
をマーシャル/非マーシャルデータへのバインドJAXBを使用してください(tutorial)。
サンプル注釈付きJAXBオブジェクト:
@XmlRootElement(name = "pie")
public class Pie {
@XmlElement(name = "slice")
public List<Slice> slices = new ArrayList<Slice>();
public Pie() {
}
public Pie(Map<String, String> sliceMap) {
for (Map.Entry<String, String> entry : sliceMap
.entrySet()) {
Slice slice = new Slice();
slice.title = entry.getKey();
slice.value = entry.getValue();
slices.add(slice);
}
}
static class Slice {
@XmlAttribute
public String title;
@XmlValue
public String value;
}
}
テストコード:
Map<String, String> slices = new HashMap<String, String>();
slices.put("Title 1", "100");
slices.put("Title 2", "200");
Pie pie = new Pie(slices);
JAXB.marshal(pie, System.out);
同じジョブと、さまざまなテンプレートオプションを行うことができ、サードパーティのAPIをホストがありますが、すでに言及されています。
すばらしい... Marvellous..voted you – Harish