Frage

Welches ist der beste Weg, um eine XML-Datei in PHP?

analysieren

Erste
Unter Verwendung des DOM-Objekt

//code
$dom = new DOMDocument();
$dom->load("xml.xml");

$root = $dom->getElementsByTagName("tag");
foreach($root as $tag)
{
$subChild = $root->getElementsByTagName("child");

// extract values and loop again if needed
}

Zweite
Mit Hilfe der Methode simplexml_load

// code
$xml = simplexml_load_string("xml.xml");
$root = $xml->root;
foreach($root as $tag)
{
$subChild = $tag->child;
// extract values and loop again if needed
}

Hinweis: Dies sind die beiden, die ich bin mir dessen bewusst. Wenn es mehr füllen.

Wollte wissen, welche Methode die beste für das Parsen von großen XML-Dateien ist auch, welche Methode die ist am schnellsten , unabhängig von der Art und Weise der Durchführung des Verfahrens werden muss,

wird Größe von 500 KB bis 2 MB variiert werden. Der Parser sollte in der Lage sein, sowohl kleine als auch große Dateien in kürzester Zeit zu analysieren, mit guter Speichernutzung, wenn möglich.

War es hilfreich?

Lösung 2

Ich habe begonnen XMLReader zu verwenden, um die XML-Dateien zu analysieren. Nachdem ich finde ein bisschen googeln um es die beste Art und Weise XML-Dateien zu analysieren, da sie die gesamte XML-Datei in dem Speicher nicht geladen werden. Sprich, wenn meine XML-Dateien annehmen, war von 5 MB, beim Parsen es mit XMLReader 5MB meiner Erinnerung nicht verloren gehen.

//usage
$xml = new XMLReader();
$xml->XML($xmlString);
while($xml->read)
{
if($xml->localName == 'Something') // check if tag name equals something
{
//do something
}
}

Verwenden von XML-Reader wir finden können, wenn der aktuelle Tag ein Starttag oder Schließen-Tag ist und das Nötige tun, wie erforderlich.

Andere Tipps

Es hängt von dem Dokument Sie vorbei, aber XMLReader ist in der Regel schneller als die beiden simplexml und DOM ( http://blog.liip.ch/archive/2004/05/10/processing_large_xml_documents_with_php.html ). Persönlich habe ich nie XMLReader verwendet habe und in der Regel entschieden, welche je zu verwenden, ob oder nicht, dass ich es bearbeiten:

  • simplexml, wenn ich nur ein Dokument
  • Lesen
  • DOM, wenn ich das DOM modifizieren und es zurück
  • Speicher

Sie können auch Objekte zwischen simplexml und DOM konvertieren.

Wenn Sie die Verarbeitung große Dateien sie nicht analysieren. Wenden Sie XSLT statt. Das wird Sie riesige Mengen an Speicher und Rechenzeit speichern.

Ich ziehe simplexml_load_string für einfache Bedienung. Verarbeitungsgeschwindigkeit und kann auf dem Format der XML-Datei ab, ob die zwei verschiedene Methoden der Parsen der Datei - versuchen Sie es auf Ihre eigenen Dateien und sehen, was für Sie besser ist

.

Alle XML wird von SimpleXML in PHP jetzt behandelt, wenn ich zu entwickeln. Es ist leicht erweitert und Methoden überschrieben, wenn nötig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top