2012-11-28 3 views
0

이것은 40MB xml 파일 작업을위한 두 가지 질문 중 하나입니다.코코아에서 두 XML 파일의 차이점을 비교하고 찾는 방법은 무엇입니까?

• 지속적으로 백그라운드에서 실행되는 프로그램을 메모리에 저장할 적당한 크기는 무엇입니까?
? XML 파일에서 변경된 내용을 찾는 방법.

그래서 첫 번째 읽기에서 XML은 NSData에로드 된 다음 서버에 업로드됩니다.

변경 될 때마다 40MB XML을 업로드하는 대신 변경된 내용 만 포함하는 "델타"파일을 업로드하는 것이 좋습니다. 프로그램은 변경 사항을 파일에서 모니터하고 수정되었을 때 활성화합니다. 내가 볼 수있는 것부터, XML 파일의 구 버전을 구문 분석하고 수정 된 XML 파일을 구문 분석 한 다음 비교할 필요가 있습니까? 파일이 수정 될 때마다 이와 같이 메모리에 80MB를 저장하는 것은 무리가 있습니까? 이제 파일의 일부만 저장했기 때문에 SAX 파서와 두 파일을 비교할 수있는 방법을 볼 수 없기 때문에 DOM 파서를 사용해야한다고 가정합니다.

나는 초보자이므로 어떤 도움을 주시면 감사하겠습니다!

답변

0

는 NSXMLParser는 사과 문서, contentsEqualAtPath에 따르면이

0

두 개의 파일을 비교하려면 :

할 수있는 많은 방법 (파일이 고려되어야하는 것입니다, 나는이 정확하지 않을 수 있습니다)가 있습니다

sdiff file1.xml file2.xml A는 유닉스 명령 당신이이 명령을 사용할 수는 사과 스크립트.

-[NSFileManager contentsEqualAtPath:andPath:] 이 방법은 그 크기를 비교 한 후, 소정의 경로를 두 개의 파일이 동일한 파일이 있는지 확인하고, 마지막으로 그 내용을 비교한다. 다른 부분에 대한

:

백그라운드 프로세스에 대한 간주됩니다 어떤 크기의

, 나는 그나마 그것은 중요한 응용 프로그램에 대한, 그렇게 생각합니다. 임시 파일에 저장할 수 있습니다. 사파리조차도 활동 모니터를 통해 쉽게 확인할 수 있으므로 130MB 이상을 사용합니다. andPath :

+0

에 가장 유용 었죠 만이 'YES'또는 'NO', 파일이 동일 따라 경우 반환합니다. 그래서 내가 찾고있는 것이 아니기 때문에, XML의 특정 부분이 변경되었는지를 알아야합니다. – urbanrider

+0

다시 한 번 확인해 봅시다 .... 그리고 sdiff는 어떻습니까 ?? –

관련 문제