xml_parse_into_struct ist eine XML-Parsingfunktion mit niedriger Ebene in PHP, die XML-Dokumente in eine Reihe strukturierter Arrays speichert. Diese Arrays enthalten die Tags, Eigenschaften und Daten für jedes Element im XML -Dokument. Die Hauptmerkmal dieser Funktion besteht darin, dass sie eine sehr genaue Steuerung bietet, sodass Sie nach Bedarf bestimmte Informationen aus XML extrahieren können.
<span><span><span class="hljs-variable">$xml</span></span><span> = <span class="hljs-string">'<?xml version="1.0" encoding="UTF-8"?>
<root>
<element id="1">Data 1</element>
<element id="2">Data 2</element>
</root>'</span>;
</span><span><span class="hljs-variable">$parser</span></span><span> = </span><span><span class="hljs-title function_ invoke__">xml_parser_create</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">xml_parse_into_struct</span></span><span>(</span><span><span class="hljs-variable">$parser</span></span><span>, </span><span><span class="hljs-variable">$xml</span></span><span>, </span><span><span class="hljs-variable">$values</span></span><span>, </span><span><span class="hljs-variable">$index</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">xml_parser_free</span></span><span>(</span><span><span class="hljs-variable">$parser</span></span><span>);
</span></span>
$ Werte : Das Parsing -Ergebnis wird in diesem Array gespeichert, das die Tag -Informationen der XML -Datei enthält.
$ INDEX : Gibt ein Indexarray zurück, das die Position jedes Tags in XML enthält.
Mit xml_parse_into_struct können Sie detaillierte Informationen über die XML -Struktur erhalten, die für Anwendungen sehr nützlich ist, die sich mit komplexen XML -Strukturen oder bestimmten Knoten befassen müssen.
Simplexml_load_file ist eine XML-Parsing-Methode auf höherer Ebene, die den Prozess der XML-Parsen vereinfacht, indem eine XML-Datei in ein Simplexmlelement-Objekt geladen wird. Dieses Objekt bietet bequeme Möglichkeiten zum Zugriff auf Elemente und Eigenschaften in XML.
<span><span><span class="hljs-variable">$xml</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_load_file</span></span><span>(</span><span><span class="hljs-string">'file.xml'</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$xml</span></span><span>->element </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$element</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$element</span></span><span> . PHP_EOL;
}
</span></span>
Simplexml_load_file gibt ein SimplexMlelement -Objekt zurück, das direkt über Objekteigenschaften auf Elemente in XML zugreifen kann. Sein Vorteil ist seine Einfachheit und Benutzerfreundlichkeit, aber für einige komplexe XML -Strukturen oder -Szenarien, in denen XML fein gesteuert werden muss, ist es möglicherweise nicht so flexibel wie XML_PARSE_INTO_STRUCT .
Obwohl xml_parse_into_struct und simplexml_load_file jeweils unterschiedliche Vor- und Nachteile haben, kann die Verwendung dieser in Kombination ihren jeweiligen Stärken ein umfassendes Spiel verleihen und die Effizienz und Flexibilität der XML -Analyse verbessern.
Verwenden Sie zunächst die Funktion Simplexml_load_file , um die XML -Datei schnell zu laden und ein SimplexMlelement -Objekt abzurufen. Dieser Schritt ist für die meisten Ihrer gewöhnlichen XML -Parsingaufgaben geeignet, insbesondere wenn die XML -Struktur relativ einfach ist und nicht in die spezifischen Attribute und Strukturen der Elemente eindringen muss.
Wenn eine komplexere Analyse erforderlich ist, können Sie mit XML_PARSE_INTO_STRUCT mehr XML -Strukturdetails verarbeiten. Wenn Sie beispielsweise Daten basierend auf den spezifischen Attributwerten eines Knotens filtern müssen, erleichtert die von xml_parse_into_struct bereitgestellte Index- und Array -Datenstruktur es Ihnen leichter, zu arbeiten.
<span><span><span class="hljs-variable">$xmlFile</span></span><span> = </span><span><span class="hljs-string">'file.xml'</span></span><span>;
</span><span><span class="hljs-comment">// Step 1: verwendensimplexml_load_fileSchnelles LadenXMLdokumentieren</span></span><span>
</span><span><span class="hljs-variable">$xml</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_load_file</span></span><span>(</span><span><span class="hljs-variable">$xmlFile</span></span><span>);
</span><span><span class="hljs-comment">// Step 2: verwendenxml_parse_into_structKomplex handhabenXMLStruktur</span></span><span>
</span><span><span class="hljs-variable">$xmlData</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$xmlFile</span></span><span>);
</span><span><span class="hljs-variable">$parser</span></span><span> = </span><span><span class="hljs-title function_ invoke__">xml_parser_create</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">xml_parse_into_struct</span></span><span>(</span><span><span class="hljs-variable">$parser</span></span><span>, </span><span><span class="hljs-variable">$xmlData</span></span><span>, </span><span><span class="hljs-variable">$values</span></span><span>, </span><span><span class="hljs-variable">$index</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">xml_parser_free</span></span><span>(</span><span><span class="hljs-variable">$parser</span></span><span>);
</span><span><span class="hljs-comment">// Step 3: Extrahieren Sie Daten durch eine Kombination aus einfacher Abfrage und detailliertes Parsen</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$xml</span></span><span>->element </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$element</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Element: '</span></span><span> . </span><span><span class="hljs-variable">$element</span></span><span> . PHP_EOL;
}
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$values</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$val</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$val</span></span><span>[</span><span><span class="hljs-string">'tag'</span></span><span>] == </span><span><span class="hljs-string">'element'</span></span><span> && </span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$val</span></span><span>[</span><span><span class="hljs-string">'attributes'</span></span><span>][</span><span><span class="hljs-string">'id'</span></span><span>]) && </span><span><span class="hljs-variable">$val</span></span><span>[</span><span><span class="hljs-string">'attributes'</span></span><span>][</span><span><span class="hljs-string">'id'</span></span><span>] == </span><span><span class="hljs-string">'1'</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Detailed Element: '</span></span><span> . </span><span><span class="hljs-variable">$val</span></span><span>[</span><span><span class="hljs-string">'value'</span></span><span>] . PHP_EOL;
}
}
</span></span>
In diesem Beispiel laden wir zuerst XML -Daten schnell über Simplexml_Load_file und iterieren durch XML -Elemente über den Objektzugriff. Als nächstes verwenden wir xml_parse_into_struct für detailliertere Parsen, um Elemente mit bestimmten Attributen zu finden. Der Vorteil dieses Ansatzes besteht darin, dass Sie in den meisten Fällen die Simplexml -Einfachheit nutzen und zu XML_PARSE_INTO_STRUCT wechseln können, wenn Sie dies sorgfältig tun müssen.
Obwohl Simplexml_Load_file und XML_PARSE_INTO_SRUCT jeweils ihre eigenen Vorteile haben, wird ihre Leistung auch durch die Größe der XML -Datei, die strukturelle Komplexität und die Parsingmethoden beeinflusst. Daher müssen wir beim Parsen großer Daten auf Leistungsprobleme besondere Aufmerksamkeit schenken.
Für kleinere XML -Dateien ist Simplexml_load_file häufig die beste Wahl, da es einfacher ist, einfach zu bedienen ist und keine explizite Verwaltung von Parsingprozessen erfordert.
Bei großen Dateien ist XML_PARSE_INTO_SRECT in der Regel effizienter, da es eine Steuerung niedrigerer Ebene liefern kann. Wenn die XML -Datei sehr groß ist, wird die Verarbeitung von XML -Daten in Stücken oder die Verwendung von Streaming -Parsen (wie XMLReader) für die Speicherverwaltung und die Leistungsoptimierung förderlicher sein.
Erwägen Sie bei der Durchführung von XML -Parsen geeignete Datenstrukturen zum Speichern und Verarbeiten von XML -Informationen. Wenn Sie beispielsweise häufig auf bestimmte Teile des XML zugreifen müssen, können die Verwendung von assoziativen Arrays anstelle von gewöhnlichen Arrays die Suchgeschwindigkeit verbessern.
Verwandte Tags:
XML