In PHP ist die Verarbeitung von XML -Daten eine häufige Aufgabe. PHP bietet viele Funktionen für das Parsen und Manipulieren von XML, wobei simplexml_import_dom und simplexml_load_string zwei gängige Funktionen sind. Obwohl sie alle XML -Daten in SimplexML -Objekte umwandeln können, haben sie unterschiedliche Verwendungen und anwendbare Szenarien. Dieser Artikel wird diese beiden Funktionen im Detail vergleichen und ihre jeweiligen Nutzungsszenarien untersuchen.
Mit der Funktion SimpXML_Load_String wird das Laden und Analysieren von Zeichenfolgen im XML -Format in Simplexml -Objekte verwendet. Diese Funktion ist besonders geeignet, wenn XML -Daten in String -Form gespeichert sind. Sie kann direkt in SimplexML -Objekte umgewandelt werden, um nachfolgende Datenvorgänge zu erleichtern.
<span><span><span class="hljs-title function_ invoke__">simplexml_load_string</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$data</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$class_name</span></span><span> = </span><span><span class="hljs-string">"SimpleXMLElement"</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$options</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$ns</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$is_prefix</span></span><span> = </span><span><span class="hljs-literal">FALSE</span></span><span>)
</span></span>
$ Daten : Die zu analysierenden XML -Daten müssen eine gültige XML -Zeichenfolge sein.
$ class_name : Optionaler Parameter, Angeben des zurückgegebenen Objekttyps, Standard ist simplexmlelement .
$ Optionen : Die Parsingoption, normalerweise 0, definiert, wie mit XML -Parsen umgegangen wird.
$ ns : Geben Sie den Namespace an.
$ is_prefix : Ob der Namespace als Präfix analysiert werden soll.
<span><span><span class="hljs-variable">$xmlString</span></span><span> = </span><span><span class="hljs-string">'<root><name>Tom</name><age>25</age></root>'</span></span><span>;
</span><span><span class="hljs-variable">$xmlObject</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_load_string</span></span><span>(</span><span><span class="hljs-variable">$xmlString</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$xmlObject</span></span><span>->name; </span><span><span class="hljs-comment">// Ausgabe:Tom</span></span><span>
</span></span>
Die Funktion Simplexml_import_dom wird verwendet, um ein DOM -Objekt (Dokumentobjektmodell) in ein Simplexml -Objekt umzuwandeln. Es ist für XML -Daten geeignet, die mit DOM -Erweiterungen geladen oder erstellt wurden. Mit dieser Funktion kann das DOM -Objekt in SimplexML -Objekt konvertiert werden, wodurch die einfache API von Simplexml weiter verarbeitet wird.
<span><span><span class="hljs-title function_ invoke__">simplexml_import_dom</span></span><span>(DOMNode </span><span><span class="hljs-variable">$node</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$class_name</span></span><span> = </span><span><span class="hljs-string">"SimpleXMLElement"</span></span><span>)
</span></span>
$ node : Ein gültiges DOM -Knoten -Objekt, das normalerweise durch DOM -Erweiterung erhalten wird.
$ class_name : Gibt den zurückgegebenen Objekttyp an, der Standard ist simplexmlelement .
<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-string">'<root><name>Tom</name><age>25</age></root>'</span></span><span>);
</span><span><span class="hljs-variable">$xmlObject</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_import_dom</span></span><span>(</span><span><span class="hljs-variable">$dom</span></span><span>->documentElement);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$xmlObject</span></span><span>->name; </span><span><span class="hljs-comment">// Ausgabe:Tom</span></span><span>
</span></span>
Während der ultimative Zweck von simplexml_load_string und simplexml_import_dom dieselbe ist - konvertieren XML -Daten in simplexml -Objekte, aber die folgenden Hauptunterschiede:
Merkmal | simplexml_load_string | simplexml_import_dom |
---|---|---|
Eingabetyp | XML -Zeichenfolge | DOM -Knotenobjekt |
Szenarien verwenden | Geeignet für die Parsen von XML-formatierten Zeichenfolgen, in der Regel Daten aus externen Quellen (wie Dateien, API-Antworten usw.) erhalten. | Geeignet zum Konvertieren von geladenen oder erstellten DOM -Objekten in simplexml -Objekte |
Datenquelle | XML -Daten in Zeichenfolgeform | Sie müssen die DOM -Erweiterung verwenden, um DOM -Objekte zu laden oder zu erstellen, bevor Sie sie verwenden können |
Typische Verwendungen | Laden Sie XML -Daten aus externen Quellen wie Datenbanken, Dateien oder API -Antworten und analysieren Sie sie | Konvertieren Sie DOM -Objekte in Simplexml -Objekte, um die Verarbeitung beim Betrieb von XML mithilfe der DOM -Erweiterung zu vereinfachen |
Abhängig von Erweiterungen | Sie müssen sich nicht auf DOM -Erweiterungen verlassen, sondern nur Simplexml -Erweiterungen | DOM -Erweiterungen, die PHP erfordern |
Simplexml_Load_String ist eine sehr bequeme Funktion, wenn Sie XML -Daten empfangen und sie sofort analysieren möchten. Wenn Sie beispielsweise eine XML-formatierte Antwort über eine API-Anforderung erhalten oder den XML-String-Inhalt aus einer Datei lesen, verwenden Sie es Simplexml_Load_String, um sie in ein SimplexML-Objekt analysieren:
<span><span><span class="hljs-variable">$xmlString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'data.xml'</span></span><span>);
</span><span><span class="hljs-variable">$xmlObject</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_load_string</span></span><span>(</span><span><span class="hljs-variable">$xmlString</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$xmlObject</span></span><span>->product->name; </span><span><span class="hljs-comment">// Ausgabe产品名称</span></span><span>
</span></span>
In diesem Fall bietet Simplexml_Load_String eine einfache und effiziente Lösung.
Simplexml_import_dom eignet sich für Szenarien, in denen DOM -Objekte verarbeitet werden müssen. Wenn Sie die prägnante Schnittstelle von Simplexml verwenden möchten, um XML -Daten bei der Verwendung von DOM -Erweiterungen (z. B. XML -Dateien durch die Domdocument -Klasse oder das Erstellen von XML -Strukturen) zu manipulieren, ist simpXML_import_dom eine gute Wahl. Zum Beispiel:
<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__">load</span></span><span>(</span><span><span class="hljs-string">'data.xml'</span></span><span>);
</span><span><span class="hljs-variable">$xmlObject</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_import_dom</span></span><span>(</span><span><span class="hljs-variable">$dom</span></span><span>->documentElement);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$xmlObject</span></span><span>->product->name; </span><span><span class="hljs-comment">// Ausgabe产品名称</span></span><span>
</span></span>
In diesem Fall können Sie mit Simplexml_import_dom die Kraft von DOM weiterhin ausnutzen und gleichzeitig die einfachere API von Simplexml genießen.
Simplexml_Load_String eignet sich zum Analysieren von XML -Zeichenfolgen in Simplexml -Objekte, insbesondere für die Verarbeitung extern erfasster XML -Daten.
Simplexml_import_dom eignet sich zum Konvertieren vorhandener DOM -Knoten in Simplexml -Objekte, die für Szenarien geeignet sind, die mit DOM -Erweiterungen verwendet werden müssen.
Obwohl beide schließlich Simplexml -Objekte zurückgeben, sind die verwendeten Szenarien unterschiedlich. Welche Funktion zu wählen ist, sollte basierend auf Ihrer Datenquelle und Ihren Anforderungen ermittelt werden.