XMLReader : l'utiliser efficacement en PHP
Question :
Avec un gros fichier XML que SimpleXML ne pouvait pas gérer , j'explore XMLReader mais je manque de conseils sur la façon de stocker le contenu des éléments dans une base de données. Pouvez-vous donner un aperçu de ce processus ?
Réponse :
L'approche dépend de la taille de votre unité de travail, en particulier si vous gérez des $z = new XMLReader;
$z->open('data.xml');
$doc = new DOMDocument;
// Move to the first node
while ($z->read() && $z->name !== 'product');
// Iterate through nodes until the end of the tree
while ($z->name === 'product') {
// Either read outer XML as a string and import it as SimpleXML or import the node as DOM
$node = new SimpleXMLElement($z->readOuterXML());
// $node = simplexml_import_dom($doc->importNode($z->expand(), true));
// Now you can access node content
var_dump($node->element_1);
// Move to the next node
$z->next('product');
}
Avantages et inconvénients des différentes approches :
-
XMLReader uniquement : Rapide , faible utilisation de la mémoire, mais difficile à coder et à déboguer.
-
XMLReader SimpleXML : Faible utilisation de la mémoire, facile à utiliser, mais la création d'objets SimpleXMLElement peut être relativement lente.
-
XMLReader DOM : Utilisation de la mémoire similaire à SimpleXML, expansion plus rapide, mais la gestion du DOM peut être plus encombrant.
Recommandation :
Commencez avec SimpleXML pour évaluer les performances. Si la vitesse est critique, pensez à DOM. Cependant, il est essentiel de minimiser votre base de code pour réduire le risque d'erreurs et de problèmes de performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!