2011-11-11 5 views
0

XML 파일에 sqlite 데이터베이스를 전송했습니다. 데이터베이스 업데이트를 처리 중이므로 서버에서 XML 파일을 가져올 때 두 XML 파일의 차이점을 찾아 내 전화 데이터베이스에 업데이트를 적용해야합니다. 문제는 두 개의 XML 파일을 성공적으로 비교하는 방법입니다. 어떤 접근법이 보이십니까?XML 파일 비교

감사

답변

0

당신은 모든 데이터가 새로운 가정 단지 관련 기록에 대한 모든 업데이트를 가장 최근의 XML 파일을 받아 적용 할 수 없습니다? 나는 그것이 이 아니라는 것을 알고 있지만 상황에 따라 좋은 선택이 될 수 있습니다.

+0

나는 그것을 할 여유가 없다. 나는 두려워서, 나는 comparsion을 만들고 특정 테이블에 변경을 적용해야한다. 내 DTB가 커질 것이므로 전체를 삭제하고 다시 만들지는 않겠지 만 일부 테이블에만 변경 사항을 적용 할 것입니다. – Waypoint

0

(만 값을 업데이트, 추가/행을 제거하지 마십시오) 모두 XML-파일의 요소 같은 양의가 (그리고 경우에만), 다음을 수행 할 수있는 경우 :

사용에게 XML을 파서 (나는 JDOM을 사용한다)는 두 파일의 모든 요소를 ​​하나의 값과 비교한다.

private void compareElements(Element one, Element two) { 
    //Check if the elements have children 
    if(one has children AND two has children) { 
    //Recursive call this method for each child 
    List oneChildren = get list of ones children 
    List twoChildren = get list of twos children 
    for(Element childOne in oneChildren AND Element childTwo in twoChildren) 
     compareElements(childOne, childTwo)) 
    } 
    else { 
     //One and two have no children and we need to compare their values 
     if(one.Value != two.Value) 
     //Update the value in the database 
    } 
} 

참고 : 위는 실제 코드를 직접 해결해야하므로, 의사 코드로 작성 - 그러나 나는 그것이 무엇을해야하는지에 대한 일반적인 아이디어를 제공 바랍니다.

또한 XML 파일의 크기에 따라 위의 내용은 실행하는 데 약간의 시간이 걸릴 수 있습니다.

+0

의견을 보내 주셔서 감사합니다.하지만 두 XML에서 같은 양의 elemnts를 처리 할 수는 없습니다. 서버에서 하나 이상의 열, 하나 이상의 테이블 ... 등등이있을 수 있습니다. – Waypoint