
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