2015-01-06 24 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; 
     } 
    } 
}