Heim  >  Artikel  >  Backend-Entwicklung  >  Wie analysiert man XML mit mehreren Namespaces mithilfe von SimpleXML?

Wie analysiert man XML mit mehreren Namespaces mithilfe von SimpleXML?

Barbara Streisand
Barbara StreisandOriginal
2024-11-05 18:52:02386Durchsuche

How to Parse XML with Multiple Namespaces Using SimpleXML?

XML mit mehreren Namespaces mit SimpleXML analysieren

Das Parsen von XML-Dokumenten mit mehreren Namespaces stellt bei der Verwendung von SimpleXML eine Herausforderung dar. Um solche Dokumente erfolgreich zu analysieren, müssen wir die Namespace-Deklarationen verarbeiten.

Das bereitgestellte XML-Dokument verfügt über mehrere Namespaces:

<code class="xml"><soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
  <soap-env:Header>
    <eb:MessageHeader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader">
      ...
    </eb:MessageHeader>
    <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
      ...
    </wsse:Security>
  </soap-env:Header>
  <soap-env:Body>
    <SessionCreateRS xmlns="http://www.opentravel.org/OTA/2002/11">
      ...
    </SessionCreateRS>
  </soap-env:Body>
</soap-env:Envelope></code>

Um dieses Dokument mit SimpleXML zu analysieren, können wir die folgenden Schritte ausführen:

  1. XML laden:XML-Zeichenfolge in ein SimpleXML-Objekt laden:
<code class="php">$xml = simplexml_load_string($xmlString);</code>
  1. Namespaces registrieren: Registrieren Sie die Namespaces im SimpleXML-Objekt mit der Methode registerXPathNamespace():
<code class="php">$xml->registerXPathNamespace('soap-env', 'http://schemas.xmlsoap.org/soap/envelope/');
$xml->registerXPathNamespace('eb', 'http://www.ebxml.org/namespaces/messageHeader');
$xml->registerXPathNamespace('wsse', 'http://schemas.xmlsoap.org/ws/2002/12/secext');</code>
  1. XPath-Abfragen verwenden: XPath-Abfragen können zum Navigieren und Abfragen verwendet werden XML-Dokument, Zugriff auf Elemente innerhalb bestimmter Namespaces:
<code class="php">foreach ($xml->xpath('//eb:MessageHeader') as $header) {
  var_dump($header->xpath('//eb:CPAId')); // Outputs "something"
}</code>

Durch Befolgen dieser Schritte können wir XML-Dokumente mit mehreren Namespaces mithilfe von SimpleXML erfolgreich analysieren, sodass wir effektiv auf Elemente in jedem Namespace zugreifen und diese bearbeiten können.

Das obige ist der detaillierte Inhalt vonWie analysiert man XML mit mehreren Namespaces mithilfe von SimpleXML?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn