2012-06-08 24 views
15

Basit XML çerçevesini Java için ek açıklamalarla (link) kullanmaya başladım, ancak XML dosyasında XML bildirim etiketi <?xml version="1.0" encoding="UTF-8" ?>'u nasıl hazırlayamıyorum. Bu yüzden sorum şu: XML etiketini ilk etiket olarak nasıl alabilirim?SimpleXML kullanarak XML Bildirimi Etiketi

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

Testi:

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

üretir: İsterdim Ne

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

olması:

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

teşekkürler! Ayrıca, bu tür şeylere nasıl bakabilirim?

+0

Bu sürüm ve kodlama, varsayılan değerlerdir (az ya da çok). Neden açık olmak istiyorsun? – Quentin

+0

Doğru, ancak: "XML bildirimi, belgeyi XML olarak tanımlayan bir işlem yönergesidir. Tüm XML belgeleri bir XML bildirimi ile başlamalıdır." [link] (http://xmlwriter.net/xml_guide/xml_declaration.shtml) –

+0

Bunun çok iyi bir kaynak olduğunu düşünmüyorum… ama [şartname kabul ediyor] (http://www.w3.org/TR/ xml/# sec-prolog-dtd) – Quentin

cevap

16

Android için Spring'i XML istekleri göndermek için kullanıyorum ve aynı sorunla karşılaşıyordum. İşte, herkesin ihtiyaç duyduğu durumlarda @ implicit_knowledge'ın çözümüne dayalı olarak iş yapmanın kodu.

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