피드로 돌아가기
The most-installed XML viewers are 2★ and abandoned. So I hand-wrote one.
Dev.toDev.to
Frontend

Zero-dependency 기반 Tolerant Parser 설계를 통한 대용량 XML 처리 최적화

The most-installed XML viewers are 2★ and abandoned. So I hand-wrote one.

benjamin2026년 6월 20일2advanced

Context

기존 XML viewer들의 DOMParser 의존성으로 인한 대용량 파일 로딩 시 Tab Freeze 현상 발생. 구문 오류 발생 시 구체적인 원인 제시 없이 빈 페이지를 출력하는 불완전한 에러 핸들링 구조의 한계 직면.

Technical Solution

  • UI Thread 블로킹 방지를 위해 Parsing 로직을 Web Worker로 분리하여 응답성 확보
  • DOMParser 및 외부 라이브러리를 배제한 Zero-dependency 기반의 Single-pass Scanner 자체 구현
  • Malformed Input에서도 중단 없이 모든 오류 지점을 수집하는 Tolerant Parsing 메커니즘 설계
  • Prototype Chain 오염으로 인한 Namespace 인식 오류 해결을 위해 Plain Object를 Map 기반 Scope로 교체
  • Deeply-nested 구조의 Call Stack Overflow 방지를 위해 Recursive Serializer를 Explicit-stack Walk 방식으로 재설계
  • V8과 SpiderMonkey 엔진 간 결과 일관성 검증을 통한 Byte-identical Output 보장

- 대용량 데이터 처리 시 Main Thread 부하 방지를 위해 Web Worker 도입 검토 - 동적 키-값 매핑 시 Prototype Pollution 방지를 위해 Plain Object 대신 Map 사용 권장 - 재귀 함수 설계 시 입력 데이터의 Depth 제한이 없다면 Stack-based Iterative 구조로 전환 고려 - UI 테스트 작성 시 Content 존재 여부뿐만 아니라 CSS Visibility 등 실제 사용자 노출 여부 검증 포함

원문 읽기