개발자 Q&A

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

2025.03.21 11:18

XMLWriter::writeElementNs 사용 중 문제가 발생했습니다.

목록
  • 반응형디자인매니아 20시간 전 2025.03.21 11:18 새글
  • 4
    1
안녕하세요 선생님. XMLWriter::writeElementNs 함수를 사용하여 XML 문서를 생성하는 중에 문제가 발생했습니다.

XMLWriter::writeElementNs 함수를 사용하여 namespace를 지정할 때, namespace prefix를 지정하는 방법이 궁금합니다. 예를 들어, namespace prefix 'xsi'를 지정하여 xsi:schemaLocation을 생성하고 싶습니다.

다음과 같은 코드를 작성하였습니다.

php

$xmlWriter = new XMLWriter();

$xmlWriter->openURI('php://output');

$xmlWriter->startDocument('1.0', 'UTF-8');

$xmlWriter->startElementNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance');

$xmlWriter->writeAttributeNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance', 'schemaLocation', 'schema.xsd');

$xmlWriter->endElementNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance');

$xmlWriter->endDocument();

$xmlWriter->flush();



위 코드에서는 namespace prefix 'xsi'를 지정하였지만, xsi:schemaLocation이 생성되지 않습니다. 어떻게 namespace prefix를 지정하여 xsi:schemaLocation을 생성할 수 있는지 알려주시겠습니까?

    댓글목록

    profile_image
    나우호스팅  20시간 전



    XMLWriter::writeElementNs 함수를 사용하여 namespace prefix를 지정하는 방법은 다음과 같습니다.

    - namespace prefix를 지정하기 위해서는 startElementNs 함수의 두 번째 인자로 namespace prefix를 지정하면 됩니다. 예를 들어, startElementNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance')를 사용하면 namespace prefix 'xsi'를 지정할 수 있습니다.

    - writeAttributeNs 함수의 첫 번째 인자로 namespace prefix를 지정하면 됩니다. 예를 들어, writeAttributeNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance', 'schemaLocation', 'schema.xsd')를 사용하면 xsi:schemaLocation을 생성할 수 있습니다.

    - endElementNs 함수의 첫 번째 인자로 namespace prefix를 지정하면 됩니다. 예를 들어, endElementNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance')를 사용하면 namespace prefix 'xsi'를 지정할 수 있습니다.

    위 코드에서 문제가 발생한 이유는 startElementNs 함수의 두 번째 인자로 namespace prefix를 지정하지 않았기 때문입니다. namespace prefix를 지정하지 않으면 namespace prefix가 자동으로 생성되지만, xsi:schemaLocation을 생성하기 위해서는 namespace prefix 'xsi'를 지정해야 합니다.

    따라서, 다음과 같이 코드를 수정하면 namespace prefix 'xsi'를 지정하여 xsi:schemaLocation을 생성할 수 있습니다.

    #hostingforum.kr
    php
    
    $xmlWriter = new XMLWriter();
    
    $xmlWriter->openURI('php://output');
    
    $xmlWriter->startDocument('1.0', 'UTF-8');
    
    $xmlWriter->startElementNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance', 'schema');
    
    $xmlWriter->writeAttributeNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance', 'schemaLocation', 'schema.xsd');
    
    $xmlWriter->endElementNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance', 'schema');
    
    $xmlWriter->endDocument();
    
    $xmlWriter->flush();
    
    


    위 코드에서는 namespace prefix 'xsi'를 지정하여 xsi:schemaLocation을 생성할 수 있습니다.

    2025-03-21 11:19

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

검색

게시물 검색