StAX-XML FAQ - JavaScript XML Parser Questions & Answers
일반 질문
섹션 제목: “일반 질문”StAX-XML은 무엇인가요?
섹션 제목: “StAX-XML은 무엇인가요?”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를
사용하세요.
Byte input 위에서 더 낮은 overhead의 batch access가 필요하면 StreamReader 또는
StreamReaderSync를 사용하세요. 대용량 동기 byte input에서는 wrapper event
iteration보다 eventCount와 index accessor를 함께 쓰는 방식을 권장합니다.
import { StreamEventType, StreamReaderSync } from 'stax-xml';
const reader = new StreamReaderSync(byteBatches);
for (const batch of reader) { for (let index = 0; index < batch.eventCount; index++) { if (batch.typeAt(index) === StreamEventType.START_ELEMENT) { console.log(batch.nameAt(index)); } }}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 안에서 처리합니다. 자세한 설명은 실행 모델을 참고하세요.
Unknown XML은 어떻게 파싱하나요?
섹션 제목: “Unknown XML은 어떻게 파싱하나요?”고정 schema가 없을 때는 tree/object helper를 사용하세요.
import { parseXmlObjectSync, parseXmlTreeSync } from 'stax-xml';
const tree = parseXmlTreeSync(xml);const object = parseXmlObjectSync(xml);element 순서와 mixed content가 중요하면 parseXmlTreeSync()를 사용하세요.
attribute를 @name key로 담는 compact object가 필요하면 parseXmlObjectSync()를
사용하세요.
대용량 파일은 어떻게 처리하나요?
섹션 제목: “대용량 파일은 어떻게 처리하나요?”I/O boundary는 streaming으로 유지하고, 도착한 byte batch는 동기적으로
파싱하세요. 읽기 쉬운 async API가 필요하면 EventReader를 사용하면 됩니다.
호출자가 이미 byte를 batching할 수 있다면 Iterable<Uint8Array[]> 위의
StreamReaderSync가 더 낮은 overhead의 sync batch API입니다.
XML은 어떻게 작성하나요?
섹션 제목: “XML은 어떻게 작성하나요?”WritableStream<Uint8Array>에는 Writer, 인메모리 string 출력에는 WriterSync,
전체 XML string을 보관하지 않는 동기 incremental 출력에는 WriterSyncSink를
사용하세요.