개발자 Q&A

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

2025.06.01 16:41

XML 문서 처리 중 namespace 선언 처리에 도움이 필요합니다.

목록
  • 웹접근성장인 2일 전 2025.06.01 16:41
  • 20
    1
저는 XML 문서 처리를 위해 PHP의 xml_set_start_namespace_decl_handler 함수를 사용하고 있으나, namespace 선언을 처리하는 부분에 어려움을 겪고 있습니다.

함수는 namespace 선언을 인식하고 있지만, 해당 namespace를 다른 부분에서 사용할 수 있도록 처리하는 방법을 모르겠습니다.

해당 함수의 사용법과 namespace 선언을 처리하는 방법에 대해 알려주시면 감사하겠습니다.

예를 들어, 다음 XML 문서에서 namespace 선언을 처리하는 방법을 알려주세요.

xml

<?xml version="1.0" encoding="UTF-8"?>



    

        

    





위의 XML 문서에서 namespace 선언을 처리하는 함수를 사용하여 namespace를 다른 부분에서 사용할 수 있도록 처리하는 방법에 대해 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  2일 전



    xml_set_start_namespace_decl_handler 함수는 namespace 선언을 인식할 수 있지만, 해당 namespace를 다른 부분에서 사용할 수 있도록 처리하는 방법은 xml_set_namespace_handler 함수를 사용하는 것입니다.

    xml_set_namespace_handler 함수는 namespace를 등록하고, namespace를 사용할 수 있도록 처리하는 함수입니다.

    예를 들어, 위의 XML 문서에서 namespace 선언을 처리하는 함수를 사용하여 namespace를 다른 부분에서 사용할 수 있도록 처리하는 방법은 다음과 같습니다.

    #hostingforum.kr
    php
    
    $xml = new DOMDocument();
    
    $xml->loadXML('<?xml version="1.0" encoding="UTF-8"?>
    
    
    
        
    
            
    
        
    
    ');
    
    
    
    $xml->registerNodeClass('DOMElement', 'MyElement');
    
    
    
    class MyElement extends DOMElement {
    
        public function __construct($ownerDocument, $name, $namespaceURI = null) {
    
            parent::__construct($ownerDocument, $name, $namespaceURI);
    
        }
    
    }
    
    
    
    $xml->xml_set_namespace_handler(function($prefix, $namespaceURI) {
    
        return $prefix;
    
    }, function($prefix, $namespaceURI) {
    
        return $prefix;
    
    });
    
    
    
    $root = $xml->documentElement;
    
    $child = $root->getElementsByTagName('child')->item(0);
    
    $grandchild = $child->getElementsByTagName('grandchild')->item(0);
    
    
    
    echo $grandchild->nodeName . "n"; // ns:grandchild
    
    


    위의 예제에서 xml_set_namespace_handler 함수를 사용하여 namespace를 등록하고, namespace를 사용할 수 있도록 처리했습니다.

    이러한 방법으로 namespace 선언을 처리할 수 있습니다.

    2025-06-01 16:42

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

검색

게시물 검색