2008-12-11 30 views
10

Cách định cấu hình trình gỡ lỗi JAXB để nó cắt các khoảng trắng đầu và cuối khỏi chuỗi?Làm thế nào để cấu hình JAXB để nó cắt bớt khoảng trắng khi unmarshalling giá trị thẻ?

Ví dụ chúng ta hãy xem xét một ràng buộc đơn giản giữa một chương trình Java và XML sử dụng JAXB chú thích:

@XmlRootElement(name="bean") 
class Bean { 

    @XmlElement(required=true) 
    String name; 

    @XmlElement(required=true) 
    int number; 
} 

Tôi muốn để có thể XML unmarshal cho dưới đây để bean.name không bao gồm khởi động và dấu chấm trắng ở cuối - là "Tên tôi", không phải "\ n Tên tôi \ n".

+0

may XML parser coi đó như là khoảng trắng "đáng kể" nếu bạn có thể định dạng đầu ra của bạn mà không xuống hàng sẽ dễ dàng hơn so với tất cả các hoops khác. .. –

Trả lời

6

Sử dụng tùy chỉnh Bộ chuyển đổi lớp. Tôi đã nghĩ rằng NormalizedStringAdapter sẽ làm công việc nhưng nó chỉ cho unmarshaling và nó không làm những gì bạn muốn anyway.

public class MyNormalizedStringAdapter extends XmlAdapter<String, String> { 

    @Override 
    public String marshal(String text) { 
     return text.trim(); 
    } 

    @Override 
    public String unmarshal(String v) throws Exception { 
     return v.trim(); 
    } 
} 

sau đó trang trí lĩnh vực này với adapter của bạn như thế này:

@XmlElement(required=true) 
@XmlJavaTypeAdapter(MyNormalizedStringAdapter.class) 
String name; 
+0

Có cách nào khác để đạt được điều đó mà không cần tạo một XmlAdapter tùy chỉnh không? – tkokoszka

+3

Nó có thể là NormalizedStringAdapter hoàn toàn bị hỏng? Nó nói rằng nó loại bỏ khoảng trắng đầu và cuối (xem javadoc), nhưng trên thực tế nó không! – Kutzi

+0

@Kutzi Có, hoặc tài liệu hoặc việc triển khai là sai. Tất cả nó là thay thế tab, lf và cr ký tự với một không gian. – Kapep

Các vấn đề liên quan