Vous avez raison dans votre compréhension de la DOM. Le fichier XML sera chargé comme un tout et tout son contenu sera construite comme une représentation en mémoire de l'arbre du document représente. Cela peut prendre du temps et de la mémoire du temps, en fonction de la taille du fichier d'entrée est. L'avantage de cette approche est que vous pouvez facilement requête de toute partie du document, et de manipuler librement tous les nœuds de l'arbre.
Le DOM approche est généralement utilisée pour de petites structures XML (où les petites dépend de la puissance et de la mémoire de votre plate-forme a), qui peuvent avoir besoin d'être modifié et interrogés de différentes façons, une fois qu'ils ont été chargés.
SAX sur l'autre main est conçu pour traiter le XML d'entrée de pratiquement n'importe quelle taille. Au lieu de le framework XML de faire le travail dur pour vous dans la compréhension de la structure du document et la préparation potentiellement un grand nombre d'objets pour tous les nœuds, les attributs, etc., SAX complètement les feuilles que pour vous.
Ce qu'il fait est de lire les commentaires de la haut et invoquer des méthodes de rappel que vous fournissez lors de certains "événements" de se produire. Un événement pourrait être frappé dans une balise d'ouverture, un attribut dans la balise, recherche de texte à l'intérieur d'un élément ou à venir à travers une balise de fin.
SAX obstinément lit l'entrée et vous dit ce qu'il voit dans ce mode. C'est à vous de conserver tous les renseignements dont vous avez besoin. Cela signifie généralement que vous construisez une sorte de machine d'état.
Bien que cette approche de traitement XML est beaucoup plus fastidieux, il peut être très puissant, trop. Imaginez que vous voulez il suffit d'extraire les titres des articles de presse à partir d'un blog d'alimentation. Si vous lisez ce document XML à l'aide de DOM il serait de charger tout le contenu de l'article, toutes les images etc. qui sont contenues dans le fichier XML en mémoire, même si vous n'êtes pas intéressé par elle.
Avec le SAX, vous pouvez simplement vérifier si le nom de l'élément est e. g.) "titre" à chaque fois que votre "startTag de l'événement" la méthode est appelée. Si oui, vous savez que vous avez besoin d'ajouter que la prochaine "elementText" événement offre à vous. Lorsque vous recevez le "endTag" cas d'appel, vous vérifiez de nouveau si ce n'est l'élément de fermeture de la "titre". Après cela, il suffit d'ignorer tous les autres éléments, jusqu'à ce que l'entrée se termine, ou d'une autre "startTag" avec un nom de "titre". Et ainsi de suite...
Vous avez pu lire au travers de mégaoctets et mégaoctets de XML de cette manière, l'extraction de la petite quantité de données dont vous avez besoin.
Le côté négatif de cette approche est, bien sûr, que vous avez besoin de faire beaucoup plus de livre-rester soi-même, selon ce que les données dont vous avez besoin pour l'extraction et le degré de complexité de la structure XML. En outre, vous ne peut naturellement pas modifier la structure de l'arborescence XML, car vous ne l'avez dans la main comme un tout.
Donc, en général, SAX est adapté pour le peignage à travers potentiellement de grandes quantités de données que vous recevez avec une "requête" à l'esprit, mais n'a pas besoin de modifier, tandis que DOM est plus destiné à vous donner une totale flexibilité dans l'évolution de la structure et du contenu, au détriment de la hausse de la demande de ressources.