2015-01-06 15 views
2

我正在使用一個消息服務,它返回一個ByteBuffer,其中包含一些我希望使用JAXB進行反序列化的XML。與JAXB一起使用ByteBuffer

是否有直接的方法(使用JAXB的Unmarshaller)反序列化ByteBuffer或將其轉換爲字符串,然後反序列化的唯一方法?

+1

您可能會發現以下有用的:http://stackoverflow.com/questions/4332264 /包裹-A-字節緩衝區與 - 一個-的InputStream –

回答

1

它應該是相當瑣碎的InputStream其中JAXB應該能夠接受作爲輸入包字節緩衝區:

public class ByteBufferInputStream extends InputStream { 
    private ByteBuffer byteBuffer; 

    public ByteBufferInputStream(ByteBuffer byteBuffer) { 
     this.byteBuffer = byteBuffer; 
    } 


    @Override 
    public int read() throws IOException { 
     if(byteBuffer.hasRemaining()) { 
      return byteBuffer.get(); 
     } else { 
      return -1; 
     } 
    } 
}