XML diff와 merge

XML diff와 merge

XML 문서 두 개를 비교해서 다른 점을 찾고, 그 차이를 다시 원본에 적용해야 하는 상황이 있죠. XML diff와 merge 확장은 정확히 그 일을 해요. 두 XML 문서의 diff를 만들고, 그 차이를 원본 문서에 적용할 수 있어요. diff 자체도 XML 문서라서 사람이 읽기 좋게 copy/insert/delete 지시 노드들로 표현돼요. DOMDocument 객체, 로컬 파일, 그리고 메모리 속 문자열 모두 처리할 수 있어요.

출처: XML diff and merge

본문

이 확장은 입력 형태에 따라 네 가지 클래스로 나뉘어요. 모두 기본 클래스 XMLDiff\Base를 상속받아 diff()merge() 메서드를 제공해요.

  • XMLDiff\Base — 모든 diff/merge 동작의 기반 클래스예요.
    • XMLDiff\Base::__construct — 생성자
    • XMLDiff\Base::diff — 두 XML 문서의 diff를 생성해요
    • XMLDiff\Base::merge — diff를 기반으로 새 XML 문서를 생성해요
  • XMLDiff\DOM — 두 DOMDocument 객체를 diff/merge해요.
    • XMLDiff\DOM::diff — 두 DOMDocument 객체를 diff해요
    • XMLDiff\DOM::merge — 병합된 DOMDocument를 생성해요
  • XMLDiff\Memory — 메모리 속 XML 문자열을 다뤄요.
    • XMLDiff\Memory::diff — 두 XML 문서를 diff해요
    • XMLDiff\Memory::merge — 병합된 XML 문서를 생성해요
  • XMLDiff\File — 로컬 XML 파일을 다뤄요.
    • XMLDiff\File::diff — 두 XML 파일을 diff해요
    • XMLDiff\File::merge — 병합된 XML 문서를 생성해요
  • XMLDiff\Exception — 처리 중 발생하는 예외 클래스예요.

데이터를 어떤 형태로 들고 있느냐에 따라 알맞은 클래스를 고르면 돼요. 파일로 처리할 땐 XMLDiff\File, 메모리 문자열이면 XMLDiff\Memory, DOM 객체를 이미 쓰고 있다면 XMLDiff\DOM을 선택하면 되죠.

더 알아보기

설치 요구 사항은 Installing/Configuring 문서를 확인해 보세요. 각 클래스와 메서드의 구체적인 사용법은 클래스별 레퍼런스 문서에서 이어서 보시면 돼요.