XML 문서로 작업 할 때 네임 스페이스는 명명 충돌을 피하기 위해 요소와 속성의 이름을 구별하는 일반적인 메커니즘입니다. PHP에서 XML 문서는 DOM 확장을 통해 구문 분석 할 수 있으며 getDocNamespaces () 메소드를 사용하여 네임 스페이스 정보를 얻을 수 있습니다.
getDocNamespaces () 메소드는 domDocument 클래스에 속합니다. 연관 배열을 반환하고 배열의 키는 네임 스페이스의 접두사이고 값은 해당 네임 스페이스 URI입니다. 이 방법은 특히 여러 네임 스페이스로 XML 문서를 처리 할 때 매우 유용하여 관련 네임 스페이스 접두사를 얻는 데 도움이됩니다.
먼저 네임 스페이스가 포함 된 XML 문서를 만듭니다. 다음과 같이 간단한 XML 문서가 있다고 가정합니다.
<span><span><span class="hljs-meta"><?xml version=<span class="hljs-string">"1.0"</span></span></span><span> encoding=</span><span><span class="hljs-string">"UTF-8"</span></span><span>?>
</span><span><span class="hljs-tag"><<span class="hljs-name">root</span></span></span><span> </span><span><span class="hljs-attr">xmlns:ns1</span></span><span>=</span><span><span class="hljs-string">"http://www.example.com/ns1"</span></span><span> </span><span><span class="hljs-attr">xmlns:ns2</span></span><span>=</span><span><span class="hljs-string">"http://www.example.com/ns2"</span></span><span>>
</span><span><span class="hljs-tag"><<span class="hljs-name">ns1:item</span></span></span><span>>Item 1</span><span><span class="hljs-tag"></<span class="hljs-name">ns1:item</span></span></span><span>>
</span><span><span class="hljs-tag"><<span class="hljs-name">ns2:item</span></span></span><span>>Item 2</span><span><span class="hljs-tag"></<span class="hljs-name">ns2:item</span></span></span><span>>
</span><span><span class="hljs-tag"></<span class="hljs-name">root</span></span></span><span>>
</span></span>
이 XML에서 루트 요소는 각각 다른 URI에 결합 된 두 개의 네임 스페이스 NS1 및 NS2 를 사용합니다.
다음 으로이 XML 문서를 PHP를 통해로드하고 getDocNamespaces () 메소드를 사용하여 네임 스페이스의 접두사를 가져옵니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$xmlString</span></span><span> = <span class="hljs-string">'<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:ns1="http://www.example.com/ns1" xmlns:ns2="http://www.example.com/ns2">
<ns1:item>Item 1</ns1:item>
<ns2:item>Item 2</ns2:item>
</root>'</span>;
</span><span><span class="hljs-variable">$dom</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DOMDocument</span></span><span>();
</span><span><span class="hljs-variable">$dom</span></span><span>-></span><span><span class="hljs-title function_ invoke__">loadXML</span></span><span>(</span><span><span class="hljs-variable">$xmlString</span></span><span>);
</span><span><span class="hljs-comment">// 문서의 네임 스페이스 접두사를 가져옵니다</span></span><span>
</span><span><span class="hljs-variable">$namespaces</span></span><span> = </span><span><span class="hljs-variable">$dom</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getDocNamespaces</span></span><span>();
</span><span><span class="hljs-comment">// 출력 네임 스페이스 접두사</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$namespaces</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$prefix</span></span><span> => </span><span><span class="hljs-variable">$namespace</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Prefix: <span class="hljs-subst">$prefix</span></span></span><span>, Namespace URI: </span><span><span class="hljs-subst">$namespace</span></span><span>\n";
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
먼저 loadxml () 메소드를 통해 XML 문자열을로드합니다.
그런 다음 getDocNamespaces () 메소드를 호출하여 네임 스페이스 접두사와 해당 URI를 포함하는 연관 배열을 반환합니다.
마지막으로, 우리는이 배열을 가로 지르고 네임 스페이스 접두사와 해당 URI를 출력합니다.
위의 PHP 코드를 실행하면 다음과 유사한 출력이 나타납니다.
<span><span><span class="hljs-attr">Prefix:</span></span><span> </span><span><span class="hljs-string">ns1,</span></span><span> </span><span><span class="hljs-attr">Namespace URI:</span></span><span> </span><span><span class="hljs-string">http://www.example.com/ns1</span></span><span>
</span><span><span class="hljs-attr">Prefix:</span></span><span> </span><span><span class="hljs-string">ns2,</span></span><span> </span><span><span class="hljs-attr">Namespace URI:</span></span><span> </span><span><span class="hljs-string">http://www.example.com/ns2</span></span><span>
</span></span>
이는 XML 문서에 각각 다른 URI에 해당하는 2 개의 네임 스페이스 NS1 및 NS2 가 포함되어 있음을 보여줍니다.
getDocNamespaces () 메소드는 XML 문서에서 모든 네임 스페이스의 접두사 및 URI를 추출하는 데 도움이되는 매우 편리한 도구입니다. 이는 복잡한 XML 문서를 구문 분석 할 때, 특히 여러 네임 스페이스를 처리해야 할 때 네임 스페이스 접두사를 통해 요소를 정확하게 식별하고 조작 할 수 있습니다.
네임 스페이스 및 getDocNamespaces () 메소드를 올바르게 사용함으로써 XML 데이터를보다 효율적으로 구문 분석하고 처리 할 수 있으며, 명명 충돌을 피하고, 문서가 명확하고 명확하고 명확하게 구성되어 있는지 확인할 수 있습니다.