2010-01-06 3 views
1

소켓을 통과하는 봉투가 있습니다. "<doc>(.*?)</doc>", Pattern.DOTALL 같은 패턴을 사용하지만, 거기에 워드 문서의 내용을 넣어 텍스트 문서와 훌륭한 작품과 그것을 밖으로 얻을 수 없다 태그에서 이진 파일의 내용 일치 (자바)

<task> 
<doc> 
This is the contents of a file 
</doc> 
</task> 
처럼. 어떤 아이디어? 짐

+1

당신은 XML 문서 _inside_ Word 문서를 가하고있어 :

아파치 평민 괜찮은 인코더/디코더를 제공? –

+2

정말 XML의 올바른 사용법입니까? 바이너리 데이터를 인코딩 할 필요가 없습니까? 그리고 정규식으로 작동하지 않을까요? 그냥 궁금해서. –

+0

아니요 xml이 아니며 태그의 정보를 식별하기위한 태그가 달린 봉투 일뿐입니다. –

답변

0

당신은 당신이 원하는 어떤 프로토콜 (비록 당신이 원한다면!)을 자유롭게 사용할 수 있도록 당신이 소켓을 통해 데이터를 보내고 있다고 언급했습니다. 나는 이런 식으로 뭔가를 할 거라고 생각 :

는 소켓을 통해 다음과 같은 보내기 : 물론

command  : 1 byte (command, enum, let '1' signifiy add_task) 
header_size : 4 byte (1 int, size of header. Header is a XML snippet of meta data like doc_name) 
doc_size : 4 byte (1 int, size of raw document) 
header_data : header_size bytes of data, interpret as an xml string 
doc_data : doc_size bytes, interpret as your raw data type 

아마이 등을 처리 할 수있는 많은 높은 수준의 프로토콜이있다. 최소한 이상한 이스케이프 시퀀스, base64, regex 및 기타 문제를 일으킬 수있는 부분을 피하는 것이 좋습니다.