Es gibt eine Reihe von Möglichkeiten, dies mit der Standard-API zu tun. (Legen Sie Ihre eigenen Einsprüche über Ausführlichkeit und die Fabrik-Muster.)
Sie die XMLStreamWriter verwenden können, um die Daten zu kodieren:
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();
}
Alternativ könnten Sie ein DOM document (nicht empfohlen) bauen und emittieren das, oder Verwenden Sie JAXB Bindung an Marshal/Unmarshal Daten (tutorial).
Probe kommentierte JAXB Objekt:
@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;
}
}
Prüfregeln:
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);
eine Vielzahl von Drittanbieter-APIs Es gibt die bereits erwähnt wurden die gleichen Arbeitsplätze und verschiedene Templating Optionen tun.
Fantastic ... Marvellous..voted für Sie – Harish