XML diff와 merge
XML diff와 merge
XML 문서 두 개를 비교해서 다른 점을 찾고, 그 차이를 다시 원본에 적용해야 하는 상황이 있죠. XML diff와 merge 확장은 정확히 그 일을 해요. 두 XML 문서의 diff를 만들고, 그 차이를 원본 문서에 적용할 수 있어요. diff 자체도 XML 문서라서 사람이 읽기 좋게 copy/insert/delete 지시 노드들로 표현돼요. DOMDocument 객체, 로컬 파일, 그리고 메모리 속 문자열 모두 처리할 수 있어요.
본문
이 확장은 입력 형태에 따라 네 가지 클래스로 나뉘어요. 모두 기본 클래스 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 문서를 확인해 보세요. 각 클래스와 메서드의 구체적인 사용법은 클래스별 레퍼런스 문서에서 이어서 보시면 돼요.