2012-02-05 33 views
25
JAXBContext context = JAXBContext 
        .newInstance(CreateExemptionCertificate.class); 
      Marshaller m = context.createMarshaller(); 
      m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 

      m.marshal(cc, System.out); 

Trong mã ở trên tôi nhận được kết quả cho bàn điều khiển (ý tôi là XML đang được in trên bảng điều khiển). Tôi muốn lấy XML này thành một chuỗi. Tôi không nhận được đối số nào tôi nên chuyển sang phương thức nguyên soái để lấy chuỗi XML trong một biến String thay vì in nó trên bàn điều khiển. Bất cứ ai có bất kỳ ý tưởng xin vui lòng chia sẻ.Nhận Marshall kết quả thành Chuỗi

+0

có thể trùng lặp của [Tôi muốn chuyển đổi luồng đầu ra thành đối tượng String] (http://stackoverflow.com/questions/2472155/i-want-to-convert-an- output-stream-into-string-object) – nbrooks

Trả lời

5

Thử kết hợp với phiên bản ByteArrayOutputStream và sau đó gọi toByteArray trên đó.

+0

Bạn muốn làm gì với nó? Cách tiếp cận mà tôi đề xuất (gọi 'toByteArray()' trên luồng) sẽ cung cấp cho bạn một cá thể 'byte []' chứa các byte của XML. – laz

+0

Tôi có nhu cầu tương tự, trong trường hợp của tôi, tôi đang cố trả lại kết quả của cuộc gọi dịch vụ. –

11

Bạn có thể làm điều đó như thế này :

CreateExemptionCertificate cc = ...; 
    JAXBContext context = JAXBContext.newInstance(CreateExemptionCertificate.class); 
    Marshaller m = context.createMarshaller(); 
    m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 

    StringWriter sw = new StringWriter(); 
    m.marshal(cc, sw); 

    String result = sw.toString(); 
Các vấn đề liên quan