XML-декларация с использованием SimpleXML
Я начинаю использовать структуру Simple XML с аннотациями (ссылка) для Java, но я не понимаю, как прелюдия тега объявления XML <?xml version="1.0" encoding="UTF-8" ?>
в файле XML. Поэтому мой вопрос: как получить XML-объявление в качестве первого тега?
package simplexml;
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
@Root
public class Example {
@Element
private String text;
@Attribute
private int index;
public Example(String text, int index) {
this.text = text;
this.index = index;
}
public String getMessage() {
return text;
}
public int getId() {
return index;
}
}
Тест:
public static void main(String[] args) {
Serializer serializer = new Persister();
Example example = new Example("Example message", 123);
File result = new File("example.xml");
try {
serializer.write(example, result);
} catch (Exception e) {
e.printStackTrace();
}
}
Выдает:
<example index="123">
<text>Example message</text>
</example>
Что бы я хотел:
<?xml version="1.0" encoding="UTF-8" ?>
<example index="123">
<text>Example message</text>
</example>
Спасибо! Кроме того, где я могу посмотреть такие вещи?
Ответы
Ответ 1
Я использую Spring для Android для отправки XML-запросов и сталкивается с той же проблемой. Здесь код, чтобы заставить его работать на основе решения @implicit_knowledge, если кому-то это понадобится.
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
Serializer serializer = new Persister(new Format("<?xml version=\"1.0\" encoding= \"UTF-8\" ?>"));
restTemplate.getMessageConverters().add(new SimpleXmlHttpMessageConverter(serializer));
restTemplate.postForObject(URL, udata, String.class);