XML에 대해선 저도 잘 모르겠습니다만; 제 생각엔 XML은 정보의 표현 그 자체일 뿐, 더도 덜도 아닌 것 같습니다. 정보를 표현하는 형식 언어일 뿐, 그것이 무엇을 의미하는지는 나타내고 있지 않기 때문이지요.

이런 일이 있었습니다. 시스템 아키텍쳐가 실행 시 외부 컴포넌트를 동적 로딩해서 기능을 완성하는데, 외부 컴포넌트에 대한 명세서는 XML로 표현되어있고 이 정보를 토대로 동적 로딩을 합니다. 저는 이것의 구현을 XML Description Loader를 만들어서 로딩된 정보를 객체로 변환하여 Map에 유지했는데요. 이때 사용한 XML Parser는 DOM이었습니다.

여기서 문제는 파싱한 XML을 별도의 Map으로 변환했다입니다. DOM Parser는 파싱된 XML을 Tree 구조로 갖고 있는데요, 그것 자체로 자료 구조가 된다는 사실을 간과한 것이지요.

구현의 개선은 생각보다 간단할 겁니다; (지금 바꾸는 중이지요) 네, 중요한 사실은 파싱된 DOM 객체는 그 자체로도 충분히 자료 구조를 표현할 수 있다는 점입니다. DOM 객체를 그대로 자료 구조로 사용하게 되면 정보의 표현을 위한 클래스들을 별도로 작성할 필요가 없어지는 것이지요. 변환 과정도 생략되기 때문에 훨씬 깔끔하게 시스템을 유지할 수 있습니다. 또한 다시 XML 로 변환해야 할 경우에도 간단히 해결할 수 있습니다.

오늘 좋은 것 배웠어요. (혼자말~)
TAG
이 글의 트랙백 주소는 http://semix2.tistory.com/trackback/107 입니다