2009-10-28 2 views
0
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    xmlParseChunk(context, (const char *)[data bytes], [data length], 0); 
} 

내 질문은 덩어리로 구문 분석 할 수있는 방법 => didReceiveData : 방법은 수신 부품 일부 무엇이<p></p>을 다음과 같이 LibXmlParsing이

  • 첫 번째 데이터와 같은

    의 데이터 ---- ------ | <masterData> 메인 </ma

  • 두 번째 데이터 ----- | 스터 > <masterData> 메인 2
  • 세 번째 데이터 -------- | </masterData >

=> xmlParseChunk() 메소드가 성공적으로 모든 청크를 구문 분석 할 수 있습니까?

답변

2

Apple의 XMLPerformance sample app은 NSURLConnection 및 청크 구문 분석과 통합 된 libxml2의 완벽한 구현을 보여줍니다. 나는 그것이 매우 도움이되는 것을 알았다.

+0

예. 그 샘플 코드가 있습니다. & 샘플 코드에서 동일한 메소드를 배치했습니다. 그러나 그것이 효과가 있다는 것은 분명하지 않습니다. # xmlParseChunk() # 메소드가 있습니다. 그것은 defination 있지만 시체가 있습니다. –

+1

귀하의 질문에 대한 확신이 없습니다. xmlParseChunk는 libxml2 라이브러리에서 구현됩니다. XML 데이터를 전달할 때마다 조금 더 파싱을 계속할 수 있습니다. 아마도 xmlParseChunk가 예제에서와 같이 불완전한 XML 태그를 발견하면 더 많은 데이터를 전달할 때까지 구문 분석이 중지됩니다. 그것은 그것의 상태를 유지하기 위해 xmlParserCtx 포인터를 사용하는 것 같아요. –

+0

오케! 훌륭합니다. 그게 내가 이해하지 못했던거야. –

0

한 가지 방법은 대리자가 NSMutableData 회원을 포함하고 새 데이터를 가져올 때 appendData:을 호출하는 것입니다. 그런 다음 대리인이 connectionDidFinishLoading 메시지를 받으면이를 구문 분석하십시오.

+0

전체 문서가 메모리에로드되면 구문 분석과 기능상 차이가 없으며 청크 구문 분석의 목적을 상실합니다. –