Мне нужно маршалировать Java pojo (ы) в xml, а pojo являются частью API, поэтому я не могу вносить какие-либо изменения, например добавлять какие-либо аннотации jaxb, есть ли другой способ преобразования этих Java-объектов в xml (например, любой API, такой как Джексон и т. д.) без использования аннотаций.
Создание xml из Java pojo без использования аннотаций
Ответы (1)
Вы можете использовать Stax
-парсер.
Device
-класс (например):
public class Device {
private String name;
private String model;
public Device(String name, String model) {
this.name = name;
this.model = model;
}
//Getters & Setters
}
Разберите Object в xml, используя XMLStreamWriter
:
List<Device> deviceList = ...
StringWriter stringWriter= new StringWriter();
XMLStreamWriter xmlWriter = XMLOutputFactory
.newFactory()
.createXMLStreamWriter(stringWriter);
xmlWriter.writeStartDocument();
xmlWriter.writeCharacters("\n");
xmlWriter.writeStartElement("devices"); // write <devices>
xmlWriter.writeCharacters("\n");
for(Device d : deviceList){
xmlWriter.writeCharacters("\t");
xmlWriter.writeStartElement("device"); // write <device>
xmlWriter.writeCharacters("\n\t\t");
xmlWriter.writeStartElement("name"); // write <name>
xmlWriter.writeCharacters(d.getName()); // write <name> value
xmlWriter.writeEndElement(); // write </name>
xmlWriter.writeCharacters("\n\t\t");
xmlWriter.writeStartElement("model"); // write <model>
xmlWriter.writeCharacters(d.getModel());// write <model> value
xmlWriter.writeEndElement(); // write </name>
xmlWriter.writeCharacters("\n\t");
xmlWriter.writeEndElement(); // write </device>
xmlWriter.writeCharacters("\n");
}
xmlWriter.writeEndElement(); // write </devices>
xmlWriter.writeEndDocument();
xmlWriter.close();
System.out.println(stringWriter.toString()); // print result
Результат:
<?xml version="1.0" ?>
<devices>
<device>
<name>iPhone</name>
<model>6s</model>
</device>
<device>
<name>iPhone</name>
<model>7</model>
</device>
<device>
<name>iPad</name>
<model>2</model>
</device>
</devices>
person
kozmo
schedule
01.05.2019
STAX
\SAX
-парсер илиDOM
-парсер - person kozmo   schedule 01.05.2019