2013-03-06 2 views
0

2 개의 XML 파일이 동일하고 내가 볼 수있는 두 가지 옵션이 있는지 확인하고자합니다. 1. XML이 시간에 대한 최종 수정 날짜를 가져 와서 동일한 지 확인하십시오. 문제는 누군가 그것을 바꾸는 것을 잊어 버리고 쓸모가 없다는 것입니다. 2. XML 파일/구조의 해시 코드를 만듭니다.XML 파일의 변경 사항을 확인하는 방법은 무엇입니까?

나는 자바 라이브러리의 빌드를 사용하지만, 해시 구현은이 작업을 수행 할 수있는 쉬운 방법이

File model = new File(fileLocation); 
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
Document doc = dBuilder.parse(model); 
doc.getHash(); 

도움이되지되는 실행 시마다 변경, 잘하면 다른 라이브러리를 수입하지 않고있다.

+3

다른 질문을 읽을 수 있습니다. * 파일 내용 *이 다른지 (단순히 파일을 해시하는지) 확인하거나 실제 XML 구조가 변경되었는지 확인하려고합니다. 요소로의 차이는 차이가 나지 않을 수도 있음). 어떤거야? –

+2

"XML 해시"를 사용하는 내 응용 프로그램에서는 잘 정의 된 순서로 DOM을 통해 해시 (스트림을 사용하여 해시)합니다. 즉, 알파벳순으로 요소를 정렬하고 깊이 우선 강등하며 각 요소에 대해 사전 순으로 값을 정렬합니다. 그것은 나를 위해 일합니다 (TM). –

+0

두 파일이 동일한 경우 첫 번째 선택이라고 생각합니다. 두 번째는 훌륭하지만, 너무 복잡하고 제 경우에는 필요하지 않다고 생각합니다. – Juan

답변

1

마틴 Thurau가 지적했듯이, 그것은 XML 내용이 동일한 경우에는 파일이 동일한 경우 확인하려면, 또는 여부 따라 달라집니다. 이 답변은 첫 번째 경우에만 사용됩니다. 두 파일이 동일한 지 알고 싶을 때 해시 값을 제안했기 때문에 질문이라고 생각합니다. 파일 크기가 동일

  1. 확인 여부,하지가 동일하지 않은 경우 : 해시 구축이 경우

    당신은 쉽게이 같은 그것을 해결할 수있는 좋은 선택이 아니다.
  2. 두 파일의 스트림을 엽니 다.
  3. 스트림을 반복하면서 첫 번째 차이로 멈 춥니 다.
  4. 차이점이 없으면 모두 같습니다.

왜 해시 값을 계산하지 않으시겠습니까? 어쨌든 해시를 계산하려면 전체 파일을 읽어야하므로 스트림을 비교할 때 계산을 수행하지 않아도되고 첫 번째 차이로 인해 멈출 수 있습니다. 파일을 DOM 모델로 구문 분석하는데도 동일한 단점이 있습니다.

2

파일을 정렬하고 도움말을 비교합니까?

라이브러리의 경우 diffxml을 시도 할 수 있습니다.

XMLUnit이있는 diff 기능

관련 문제