j'ai découvert le xml récemment et je veut maintenant en mettre partout

je trouve ca bien plus souple que le sql, mais de grande questions me turlupines
1- les fichiers sont ils parsés suivants les demandes ?
exemple je fait un xpath qui va prendre /commercants/commercant[@ref="toto"]
ben en fait ce con avais déjà tout parsé et mis en objet ou alors il découvre au fur et a mesure ?
style il va tout charger jusqu'à ce qu'il rencontre 'commerçants' puis rescanner jusqu'à obtenir le/les 'commerçant' avec la ref toto ?
un peu comme va faire un éditeur de texte habile avec un .txt de 4go ?
je me pose la question car la mon xml est tout petit, mais si il fait 5 mo, et qu'à chaque page ca le recharge et rescanne ... voila quoi

si il ne parse pas à la demande, certaines lib le font peu être ? la j'utilise simplexml en php, mais il y à aussi l'objet dom etc
dans le cas contraire, la solution serais d'éclater en plein de fichiers et faire la sélection de ce qu'il faut charger moi même ?
en fait le but est de tester un peu la techno sur ce petit projet pour l'utiliser à une plus grande échelle après si c'est concluant, typiquement sur un site de vente en ligne, avec plusieurs centaines de produits
2- niveau recherche,
j'ai pas encore testé, mais il existe "contains" que je peu utiliser dans mes xpath pour sélectionner les nœud qui contiennent une sous chaine dans leurs attributs, donc similaire au like en sql, vais avoir des mauvaises surprises en l'utilisant ?
3- mise en cache
je ne peu pas stocker l'objet simple xml en session, bref je charge le xml depuis le fichier (ou la session) à chaque fois (ce qui reviens surtout à ma question 1)
* est ce plus rapide pour php de charger le fichier xml ou de le prendre depuis la session ?
* php utilise t'il un cache 'interne' pour garder le xml en ram etc ?
* un hack ou autre chose existe t'il pour sauver l'objet en session ? serialize peu etre ?
* si mon objet fait 5mo la session va elle souffrir ?
4- vous, vous faite comment ?
en fait, je ne veut pas perdre de temps la dessus si ce n'est pas assez robuste et rapide pour supporter de 'gros' xml