2012-06-08 33 views
15

Tôi bắt đầu sử dụng khung XML đơn giản với chú thích (link) cho Java, nhưng tôi không hiểu, cách mở đầu thẻ khai báo XML <?xml version="1.0" encoding="UTF-8" ?> trong tệp XML. Vì vậy, câu hỏi của tôi là: Làm cách nào để nhận khai báo XML là thẻ đầu tiên?Thẻ khai báo XML bằng 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(); 
     } 
    } 

Tạo:

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

Những gì tôi muốn có:

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

Cảm ơn! Ngoài ra, tôi có thể tìm những thứ như thế ở đâu?

+0

Phiên bản và mã hóa đó (nhiều hơn hoặc ít hơn) giá trị mặc định. Tại sao bạn muốn rõ ràng? – Quentin

+0

Đúng, nhưng: "Khai báo XML là một lệnh xử lý xác định tài liệu là XML. Tất cả các tài liệu XML phải bắt đầu bằng một khai báo XML." [link] (http://xmlwriter.net/xml_guide/xml_declaration.shtml) –

+0

Tôi không nghĩ đó là một nguồn rất tốt ... nhưng [đặc điểm kỹ thuật đồng ý] (http://www.w3.org/TR/ xml/# sec-prolog-dtd) – Quentin

Trả lời

16

Tôi sử dụng Spring for Android để gửi yêu cầu XML và đang đối mặt với cùng một vấn đề. Đây là mã để làm cho nó hoạt động dựa trên giải pháp của @ implicit_knowledge trong trường hợp ai đó cần nó.

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); 
Các vấn đề liên quan