Nfe - como desenvelopar a mensagem com JaxB?

Estou trabalhando com JaxB para desenvolvimento da Nfe 2.0.
Baseado nos xsd’s, já desenvolvi quase todo o projeto. Agora eu quero:

  1. Extrair a Tag de Grupo que me interessa. Exemplo: tirar o grupo protNFe (protocolo) e seus elementos, contidos no envelope SOAP.
  2. Executar o unmarshaller com o xml na memória, ou seja, quero pegar a resposta da SEFAZ e povoar o objeto correspondente. No momento só consigo fazer marshaller/unmarshaller de xml gravado em disco;

Já tentei de várias formas e já pesquisei bastante, mas ainda está enrolado.
Abaixo um exemplo de retorno:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<soap:Header>
		<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2">
			<cUF>35</cUF>
			<versaoDados>2.00</versaoDados>
		</nfeCabecMsg>
	</soap:Header>
	<soap:Body>
		<nfeConsultaNF2Result
			xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2">
			<retConsSitNFe xmlns="http://www.portalfiscal.inf.br/nfe"
				versao="2.00">
				<tpAmb>2</tpAmb>
				<verAplic>SP_NFE_PL_006h</verAplic>
				<cStat>100</cStat>
				<xMotivo>Autorizado o uso da NF-e</xMotivo>
				<cUF>35</cUF>
				<chNFe>35110304866037000158550010000003181000003181</chNFe>
				<protNFe versao="2.00">
					<infProt>
						<tpAmb>2</tpAmb>
						<verAplic>SP_NFE_PL_006h</verAplic>
						<chNFe>35110304866037000158550010000003181000003181</chNFe>
						<dhRecbto>2011-03-30T21:06:43</dhRecbto>
						<nProt>135110003289057</nProt>
						<digVal>tMaw4b4zE6lSLYU2/d+snQhg5ds=</digVal>
						<cStat>100</cStat>
						<xMotivo>Autorizado o uso da NF-e</xMotivo>
					</infProt>
				</protNFe>
			</retConsSitNFe>
		</nfeConsultaNF2Result>
	</soap:Body>
</soap:Envelope>

E aí pessoal, sem sugestões?
Todos estão extraindo do envelope o que interessa na mão mesmo?
Qualquer sugestão ajuda.