현재 위치: > 최신 기사 목록> getDocNamespaces를 통해 XML 문서에서 네임 스페이스의 접두사를 얻는 방법은 무엇입니까?

getDocNamespaces를 통해 XML 문서에서 네임 스페이스의 접두사를 얻는 방법은 무엇입니까?

M66 2025-07-10

XML 문서로 작업 할 때 네임 스페이스는 명명 충돌을 피하기 위해 요소와 속성의 이름을 구별하는 일반적인 메커니즘입니다. PHP에서 XML 문서는 DOM 확장을 통해 구문 분석 할 수 있으며 getDocNamespaces () 메소드를 사용하여 네임 스페이스 정보를 얻을 수 있습니다.

getDocNamespaces () 메소드는 domDocument 클래스에 속합니다. 연관 배열을 반환하고 배열의 키는 네임 스페이스의 접두사이고 값은 해당 네임 스페이스 URI입니다. 이 방법은 특히 여러 네임 스페이스로 XML 문서를 처리 할 때 매우 유용하여 관련 네임 스페이스 접두사를 얻는 데 도움이됩니다.

1. 간단한 XML 문서를 만듭니다

먼저 네임 스페이스가 포함 된 XML 문서를 만듭니다. 다음과 같이 간단한 XML 문서가 있다고 가정합니다.

 <span><span><span class="hljs-meta">&lt;?xml version=<span class="hljs-string">"1.0"</span></span></span><span> encoding=</span><span><span class="hljs-string">"UTF-8"</span></span><span>?&gt;
</span><span><span class="hljs-tag">&lt;<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>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">ns1:item</span></span></span><span>&gt;Item 1</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">ns1:item</span></span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">ns2:item</span></span></span><span>&gt;Item 2</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">ns2:item</span></span></span><span>&gt;
</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">root</span></span></span><span>&gt;
</span></span>

이 XML에서 루트 요소는 각각 다른 URI에 결합 된 두 개의 네임 스페이스 NS1NS2 를 사용합니다.

2. getDocNamespaces ()를 사용하여 네임 스페이스를 가져옵니다

다음 으로이 XML 문서를 PHP를 통해로드하고 getDocNamespaces () 메소드를 사용하여 네임 스페이스의 접두사를 가져옵니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$xmlString</span></span><span> = <span class="hljs-string">'&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;root xmlns:ns1="http://www.example.com/ns1" xmlns:ns2="http://www.example.com/ns2"&gt;
    &lt;ns1:item&gt;Item 1&lt;/ns1:item&gt;
    &lt;ns2:item&gt;Item 2&lt;/ns2:item&gt;
&lt;/root&gt;'</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>-&gt;</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>-&gt;</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> =&gt; </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">?&gt;</span></span><span>
</span></span>

3. 코드 설명

  • 먼저 loadxml () 메소드를 통해 XML 문자열을로드합니다.

  • 그런 다음 getDocNamespaces () 메소드를 호출하여 네임 스페이스 접두사와 해당 URI를 포함하는 연관 배열을 반환합니다.

  • 마지막으로, 우리는이 배열을 가로 지르고 네임 스페이스 접두사와 해당 URI를 출력합니다.

4. 출력 결과

위의 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 개의 네임 스페이스 NS1NS2 가 포함되어 있음을 보여줍니다.

5. 요약

getDocNamespaces () 메소드는 XML 문서에서 모든 네임 스페이스의 접두사 및 URI를 추출하는 데 도움이되는 매우 편리한 도구입니다. 이는 복잡한 XML 문서를 구문 분석 할 때, 특히 여러 네임 스페이스를 처리해야 할 때 네임 스페이스 접두사를 통해 요소를 정확하게 식별하고 조작 할 수 있습니다.

네임 스페이스 및 getDocNamespaces () 메소드를 올바르게 사용함으로써 XML 데이터를보다 효율적으로 구문 분석하고 처리 할 수 ​​있으며, 명명 충돌을 피하고, 문서가 명확하고 명확하고 명확하게 구성되어 있는지 확인할 수 있습니다.