2013-08-11 3 views
0

RSS 성능을 향상시키기 위해 RSS 피드를 SQLite 데이터베이스에 캐시하고 싶습니다.
저는 RSS 피드의 기본적인 내용, 즉 title, description, URL guidpubDate에만 관심이 있습니다. 현재로서는 처리하여 Vector<Feed>에 저장할 수 있습니다. Feed은 내 사용자 정의 클래스입니다.안드로이드에 RSS 피드를 저장하는 방법?

안드로이드에 초보자로 생각하는 몇 가지 사항이 있습니다. 나는 데이터베이스에 모든 피드를 추가 할 필요가 있음을 의미하는 0을 반환 할 테이블의 행 수를 받고, 첫 번째 실행에서

1. Cat Kills the Dog 
2. Curosity Killed the Cat in Revenge 
3. Y U NO leave Cat alone ? 

:
내가 제목에 다음과 같습니다 피드 항목을 말해봐 . 아무 문제 없습니다.
피드가 업데이트 될 때 문제가 발생합니다. 여기에 업데이트 된 피드는 다음과 같습니다

*. Quick Brown Fox Jumps Over The Lazy Dog. Dog Dies. 
1. Cat Kills the Dog 
2. Curosity Killed the Cat in Revenge 
3. Y U NO leave Cat alone ? 

논리는 다음과 같습니다
1.이 RSS 피드를 구문 분석.
2. 새로 가져온 RSS 피드의 제목을 읽습니다.
3. 데이터베이스의 첫 번째 행 제목과 일치합니까?
3.1. 아니오, 구문 분석을 계속하고이 피드를 데이터베이스에 추가하십시오.
3.2. 예, 파싱을 중지하고이 피드를 데이터베이스에 추가하십시오.

문제는 RSS XML 피드에서와 같이 후속 비교가 쉬워 지도록 첫 행을 가져야하는 반면 테이블을 추가 한 행은 이제 마지막 행입니다.

피드 XML에서와 비슷한 행 순서를 유지해야합니다.
해당 주문을 어떻게 유지합니까?

피드를 구성하고 저장하는 더 좋은 방법이 있습니까?

답변

1

먼저, 고유 한 제목에 의존하지 마십시오. 대신 guid 필드를 사용하여 항목의 고유 식별자로 사용하십시오 (the RSS specification 참조).

업데이트 피드

가 검색 피드의 각 항목을 통해 이동하고 guid가 데이터베이스에 이미 존재하는 경우 그래서, 그것을 건너 뛸 경우를 참조하십시오.

존재하지 않는 경우 항목을 만듭니다.

그래서, 당신의 논리를 수정 :

  1. 시작은 RSS 피드를 구문 분석.
  2. 새로 가져온 RSS 피드의 guid을 읽으십시오.
  3. 데이터베이스의 모든 행의 guid과 일치합니까? 3.1. 아니오, 구문 분석을 계속하고이 피드를 데이터베이스에 추가하십시오. 3.2. 예, 파싱을 중지하고이 피드를 데이터베이스에 추가하십시오.항목이 게시되었을 때 표시 pubDate라는 필드도 있습니다 항목

주문. retrieveing ​​때 단순히 데이터베이스의 각 항목에 대한 pubDate를 저장하고는 ORDER BY 절에 사용

SELECT * FROM items ORDER BY pubDate DESC

을 출판물의 순서로 당신에게 항목을 줄 것이다.

UPDATE : SQLite는 날짜에 대한 기본 데이터 타입을 가지고 있지 않기 때문에 데이터베이스에 삽입하기 전에, 당신이 the time/date helper functions 또는 convert pubDate to epoch format in your code을 활용할 수 중 하나.

+0

'pubDate'는'Fri, 09 Aug 2013 22 : 46 : 12' 형식으로 제공됩니다. 직접 테이블에 저장합니까? –

+0

분명히 SQLite는 날짜를 TEXT (http://www.sqlite.org/datatype3.html#datetime)로 저장합니다. 가장 쉬운 방법은'pubDate'를 INTEGER로 저장하고이를 UNIX epoch (http://stackoverflow.com/questions/6687433/convert-date-format-to-epoch)로 변환하는 것입니다. –

+0

그리고'Feed' 객체로 변환 할 수 있도록 검색 할 때의 역 과정? :) –

관련 문제