Wie analysiert man XML mit mehreren Namespaces mithilfe von SimpleXML?

Barbara Streisand
Freigeben: 2024-11-05 18:52:02
Original
441 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren
  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>
Nach dem Login kopieren
  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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage