2012-06-08 9 views
15

Zaczynam używać struktury Simple XML z adnotacjami (link) dla Javy, ale nie rozumiem, jak zawrzeć w pliku XML znacznik deklaracji XML <?xml version="1.0" encoding="UTF-8" ?>. Moje pytanie brzmi: w jaki sposób uzyskać deklarację XML jako pierwszy znacznik?Znacznik deklaracji XML za pomocą SimpleXML

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; 
    } 
} 

Test:

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(); 
     } 
    } 

Produkuje:

<example index="123"> 
    <text>Example message</text> 
</example> 

Co chciałbym posiadać:

<?xml version="1.0" encoding="UTF-8" ?> 
<example index="123"> 
    <text>Example message</text> 
</example> 

Dzięki! Poza tym, gdzie mógłbym tak wyglądać?

+0

Ta wersja i kodowanie są (bardziej lub mniej) wartościami domyślnymi. Dlaczego chcesz być bezpośredni? – Quentin

+0

To prawda, ale: "Deklaracja XML jest instrukcją przetwarzania, która identyfikuje dokument jako XML.Wszystkie dokumenty XML powinny zaczynać się od deklaracji XML." [link] (http://xmlwriter.net/xml_guide/xml_declaration.shtml) –

+0

Nie sądzę, że jest to bardzo dobre źródło ... ale [specyfikacja się zgadza] (http://www.w3.org/TR/ xml/# sec-prolog-dtd) – Quentin

Odpowiedz

16

Używam Spring dla Androida do wysyłania żądań XML i stanąłem wobec tego samego problemu. Oto kod, w którym można go uruchomić na podstawie rozwiązania @ implicit_knowledge, na wypadek, gdyby ktoś go potrzebował.

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); 
Powiązane problemy