Bei der Arbeit mit XML -Dokumenten ist der Namespace ein gemeinsamer Mechanismus, um die Namen von Elementen und Attributen zu unterscheiden, um Konflikte zu vermeiden. In PHP können XML -Dokumente durch DOM -Erweiterungen analysiert werden, und Namespace -Informationen können mit der Methode getDocNamePaces () erhalten werden.
Die Methode getDocNamePaces () gehört zur Domdocument -Klasse. Es gibt ein assoziatives Array zurück, der Schlüssel des Arrays ist das Präfix des Namespace, und der Wert ist der entsprechende Namespace URI. Diese Methode ist sehr nützlich, insbesondere wenn es um XML -Dokumente mit mehreren Namespaces geht, die uns helfen können, das entsprechende Namespace -Präfix zu erhalten.
Erstellen Sie zunächst ein XML -Dokument, das den Namespace enthält. Angenommen, wir haben wie folgt ein einfaches XML -Dokument:
<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>
In diesem XML verwendet das Stammelement zwei Namespaces NS1 bzw. NS2 , die an verschiedene URIs gebunden sind.
Als nächstes laden wir dieses XML -Dokument über PHP und verwenden die Methode getDocNamePaces (), um das Präfix des Namespace zu erhalten.
<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">// Holen Sie sich das Namespace -Präfix für das Dokument</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">// Ausgabennamenspace Präfix</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>
Wir laden zuerst die XML -Zeichenfolge durch die methode loadxml () .
Rufen Sie dann die Methode getDoCnamePaces () auf, die ein assoziatives Array mit dem Namespace -Präfix und dem entsprechenden URI zurückgibt.
Schließlich durchqueren wir dieses Array und geben das Namespace -Präfix und den entsprechenden URI aus.
Nachdem Sie den obigen PHP -Code ausgeführt haben, erhalten Sie eine ähnliche Ausgabe wie folgt:
<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>
Dies zeigt, dass das XML -Dokument zwei Namespaces NS1 und NS2 enthält, die unterschiedlichen URIs entsprechen.
Die GetDocNamePaces () -Methode ist ein sehr bequemes Werkzeug, mit dem wir Präfixe und URIs aller Namespaces aus XML -Dokumenten extrahieren können. Dies ist nützlich, wenn komplexe XML -Dokumente analysiert werden, insbesondere wenn mehrere Namespaces verarbeitet werden müssen, können Elemente durch Namespace -Präfixe genau identifiziert und manipuliert werden.
Durch die korrekte Verwendung der Methode des Namespace- und GetDocNamePaces () können wir XML -Daten effizienter analysieren und verarbeiten, Konflikte nennen und sicherstellen, dass das Dokument klar und eindeutig strukturiert ist.