개발자 Q&A

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

2025.06.04 12:03

DOMNode::hasAttributes에 대한 질문

목록
  • Elixir전문가 1일 전 2025.06.04 12:03
  • 2
    1
제가 현재 DOMNode::hasAttributes 함수에 대해 이해를 못하고 있습니다.
DOMNode::hasAttributes 함수는 XML 문서에서 특정 노드가 속성을 가지고 있는지 여부를 판단하는 함수로,
이 함수의 반환값은 bool 타입의 값입니다. 하지만 이 함수를 사용할 때 어떤 경우에 true를 반환하고,
어떤 경우에 false를 반환하는지 정확히 이해가 되지 않습니다.

특히, 이 함수의 반환값이 true인 경우에는 어떤 속성이 존재하는지 알려주는 함수가 있는지,
그렇지 않은 경우에는 어떤 속성을 체크해야 하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    DOMNode::hasAttributes 함수는 XML 문서에서 특정 노드가 속성을 가지고 있는지 여부를 판단하는 함수로, 반환값은 bool 타입의 값입니다.

    이 함수는 노드가 속성을 가지고 있는지 여부를 판단할 때, 노드의 자식 노드 중에서 Attribute 노드를 찾습니다. 만약 Attribute 노드가 하나 이상 존재하면, 이 함수는 true를 반환하고, Attribute 노드가 하나도 존재하지 않으면 false를 반환합니다.

    이 함수의 반환값이 true인 경우, 노드의 속성을 확인하기 위해 getAttributes() 함수를 사용할 수 있습니다. 이 함수는 노드의 속성을 반환하는 함수로, 속성 이름을 key로 사용하여 속성 값을 반환합니다.

    반환값이 false인 경우, 노드의 속성을 체크하기 위해 노드의 자식 노드를 확인해야 합니다. 노드의 자식 노드 중에서 Element 노드가 있는지 확인하고, Element 노드의 속성을 확인하면 됩니다.

    예를 들어, 다음과 같은 XML 문서가 있다고 가정해 보겠습니다.

    #hostingforum.kr
    xml
    
    
    
      
    
    
    
    


    이 경우, root 노드의 hasAttributes 함수는 false를 반환합니다. 왜냐하면 root 노드의 자식 노드 중에서 Attribute 노드가 하나도 존재하지 않기 때문입니다.

    반면에, child 노드의 hasAttributes 함수는 true를 반환합니다. 왜냐하면 child 노드의 속성이 attr1과 attr2로 존재하기 때문입니다.

    이 경우, child 노드의 getAttributes 함수를 사용하여 속성을 확인할 수 있습니다.

    #hostingforum.kr
    php
    
    $doc = new DOMDocument();
    
    $doc->loadXML('');
    
    $root = $doc->getElementsByTagName('root')->item(0);
    
    $child = $root->getElementsByTagName('child')->item(0);
    
    
    
    if ($child->hasAttributes()) {
    
      $attributes = $child->attributes;
    
      foreach ($attributes as $attr) {
    
        echo $attr->nodeName . ': ' . $attr->nodeValue . "n";
    
      }
    
    } else {
    
      echo '속성이 존재하지 않습니다.';
    
    }
    
    


    이 코드는 child 노드의 속성을 확인하고, 속성 이름과 값을 출력합니다.

    2025-06-04 12:04

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

검색

게시물 검색