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 문서에 있으니 함께 보시면 좋아요.