
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