개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.03 18:07

XMLWriter::writeDtdEntity 관련 질문

목록
  • 코딩테스트러버 2일 전 2025.08.03 18:07
  • 6
    1
제가 XMLWriter::writeDtdEntity 함수를 사용하여 DTD 엔티티를 생성하는 중입니다.

이 함수는 DTD 엔티티를 생성할 때 공백 문자를 자동으로 추가하는 것 같습니다.

하지만, 이 공백 문자를 제거하고 싶습니다.

이 함수의 동작 원리를 알고 싶습니다.

공백 문자를 자동으로 추가하는 이유는 무엇입니까?

이 함수를 사용하여 공백 문자를 제거하는 방법은 무엇입니까?

    댓글목록

    profile_image
    나우호스팅  2일 전



    XMLWriter::writeDtdEntity 함수는 DTD 엔티티를 생성할 때 공백 문자를 자동으로 추가하는 이유는 PHP의 XMLWriter 클래스가 XML 문서를 생성할 때 공백 문자를 자동으로 추가하기 때문입니다.

    이러한 동작은 XML 문서의 구조를 유지하고 읽기 쉽게 하기 위해 수행됩니다.

    이 함수의 동작 원리를 알기 위해서는 PHP의 XMLWriter 클래스의 소스 코드를 참조하거나 PHP의 공식 문서를 확인할 수 있습니다.

    공백 문자를 자동으로 추가하는 이유는 XML 문서의 구조를 유지하고 읽기 쉽게 하기 위해 수행됩니다.

    이 함수를 사용하여 공백 문자를 제거하는 방법은 다음과 같습니다.

    1. 공백 문자를 제거하기 위한 옵션을 설정합니다.

    #hostingforum.kr
    php
    
    $xmlWriter = new XMLWriter();
    
    $xmlWriter->openURI('php://output');
    
    $xmlWriter->startDocument('1.0', 'UTF-8');
    
    $xmlWriter->startDTD('example', 'SYSTEM', 'example.dtd');
    
    $xmlWriter->writeDTDEntity('example', 'example.dtd', 'example.dtd', false);
    
    $xmlWriter->endDTD();
    
    $xmlWriter->endDocument();
    
    $xmlWriter->flush();
    
    

    위 코드에서 `false`를 `true`로 설정하면 공백 문자가 자동으로 추가됩니다.

    2. 공백 문자를 제거하기 위한 함수를 직접 구현합니다.
    #hostingforum.kr
    php
    
    function writeDtdEntity($xmlWriter, $name, $systemId, $publicId, $addSpace = true) {
    
        if ($addSpace) {
    
            $xmlWriter->writeRaw(' ');
    
        }
    
        $xmlWriter->writeRaw('
        $xmlWriter->writeRaw($name);
    
        $xmlWriter->writeRaw(' SYSTEM ');
    
        $xmlWriter->writeRaw($systemId);
    
        if ($publicId) {
    
            $xmlWriter->writeRaw(' PUBLIC ');
    
            $xmlWriter->writeRaw($publicId);
    
        }
    
        $xmlWriter->writeRaw('>');
    
    }
    
    
    
    $xmlWriter = new XMLWriter();
    
    $xmlWriter->openURI('php://output');
    
    $xmlWriter->startDocument('1.0', 'UTF-8');
    
    $xmlWriter->startDTD('example', 'SYSTEM', 'example.dtd');
    
    writeDtdEntity($xmlWriter, 'example', 'example.dtd', 'example.dtd', false);
    
    $xmlWriter->endDTD();
    
    $xmlWriter->endDocument();
    
    $xmlWriter->flush();
    
    

    위 코드에서 `addSpace` 변수를 `false`로 설정하면 공백 문자가 자동으로 추가되지 않습니다.

    2025-08-03 18:08

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 41,674건 / 1 페이지

검색

게시물 검색