콘텐츠로 이동
StAX-XML

StAX-XML FAQ - JavaScript XML Parser Questions & Answers

StAX-XML은 JavaScript/TypeScript용 pure JavaScript pull-style XML parser와 writer입니다. Node.js, Bun, Deno, browser, edge runtime을 지원하며 native addon, Wasm parser module, backend selection mode를 사용하지 않습니다.

어떤 reader부터 시작해야 하나요?

섹션 제목: “어떤 reader부터 시작해야 하나요?”

ReadableStream<Uint8Array> 입력에서 ergonomic event object가 필요하면 EventReader를 사용하세요.

인메모리 XML string에서 ergonomic event object가 필요하면 EventReaderSync를 사용하세요.

String 또는 byte input 위에서 더 낮은 overhead의 동기 순회가 필요하면 StreamReaderSync를 사용하세요. Event마다 object를 만들지 않는 current-token pull loop를 제공합니다.

import { StreamReaderSync, XmlEventType } from 'stax-xml';
const reader = new StreamReaderSync(byteChunks);
while (reader.next() !== null) {
if (reader.eventType() === XmlEventType.START_ELEMENT) {
console.log(reader.name());
}
}

StAX-XML은 native addon이나 Wasm을 사용하나요?

섹션 제목: “StAX-XML은 native addon이나 Wasm을 사용하나요?”

아니요. StAX-XML은 순수 JavaScript 패키지로 배포됩니다. 설치하거나 선택해야 하는 native addon, Wasm parser module, backend selection 단계가 없습니다. 공개 API가 JavaScript 문자열, attribute, event object, converter output object를 반환하므로 지원하는 실행 모델은 parsing과 값 생성을 JavaScript 안에서 처리합니다. 자세한 설명은 실행 모델을 참고하세요.

고정 schema가 없을 때는 tree/object helper를 사용하세요.

import { EventReaderSync, XmlEventType } from 'stax-xml';
for (const event of new EventReaderSync(xml)) {
if (event.type === XmlEventType.START_ELEMENT) console.log(event.name);
}

Allocation이 중요하면 StreamReaderSync, target object shape를 알고 있다면 converter를 사용하세요.

대용량 파일은 어떻게 처리하나요?

섹션 제목: “대용량 파일은 어떻게 처리하나요?”

I/O boundary는 streaming으로 유지하세요. 읽기 쉬운 async API에는 EventReader, 낮은 allocation의 current-token API에는 StreamReader를 사용합니다. 호출자가 synchronous byte source를 이미 가지고 있다면 StreamReaderSync를 사용하세요.

WritableStream<Uint8Array>에는 Writer, 인메모리 string 출력에는 WriterSync, 전체 XML string을 보관하지 않는 동기 incremental 출력에는 WriterSyncSink를 사용하세요.