XMLWriter

XMLWriter

XML 문서를 생성해서 파일이나 스트림으로 내보내야 할 때, XMLWriter가 깔끔한 선택이에요. XMLWriter 확장은 libxml의 xmlWriter API를 감싼 확장이에요. 이 확장은 캐시하지 않고 앞으로만 나아가는(foward-only), XML 데이터가 담긴 스트림이나 파일을 생성하는 수단을 제공해요. 객체 지향 스타일로 쓸 수도 있고, 절차(procedural) 스타일로 쓸 수도 있어요. 각 메서드에는 대응하는 절차형 함수 호출이 함께 문서화되어 있어요.

출처: XMLWriter

본문

시작은 출력 대상 지정이에요. openMemory()(메모리로 출력), openUri()(파일/URI로 출력), 그리고 toMemory()/toUri()/toStream() 중에서 고르면 돼요.

XMLWriter 클래스

XMLWriter 클래스의 주요 메서드를 시작/종료와 쓰기로 나눠 볼게요.

  • 출력 대상: openMemory, openUri, toMemory, toUri, toStream
  • 요소: startElement, startElementNs, endElement, fullEndElement, writeElement, writeElementNs
  • 속성: startAttribute, startAttributeNs, endAttribute, writeAttribute, writeAttributeNs
  • 문자/기타 콘텐츠: text, writeRaw, writeCdata, startCdata, endCdata, writeComment, startComment, endComment, writePi
  • 문서·버퍼: startDocument, endDocument, flush(버퍼 비우기), outputMemory(현재 버퍼 반환)
  • 들여쓰기: setIndent, setIndentString
  • DTD: startDtd, endDtd, writeDtd, startDtdElement, endDtdElement, writeDtdElement, startDtdAttlist, endDtdAttlist, writeDtdAttlist, startDtdEntity, endDtdEntity, writeDtdEntity

기본 사용 예

$writer = new XMLWriter();
$writer->openMemory();
$writer->startDocument('1.0', 'UTF-8');
$writer->startElement('root');
$writer->text('내용');
$writer->endElement();
$writer->endDocument();
echo $writer->outputMemory();

사용할 때 주의할 점이 있어요. XMLWriter는 입력으로 UTF-8 데이터를 기대해요. 다양한 인코딩으로 XML을 출력할 수는 있지만, 입력은 반드시 UTF-8이어야 해요.

더 알아보기

설치 요구 사항과 자원 타입은 Installing/Configuring 문서를 확인해 보세요. 간단한 XML 문서 만들기, 네임스페이스 다루기, 객체 지향 API 사용법은 Examples 문서에 있으니 함께 보시면 좋아요.