Valider la syntaxe d'un fichier XML sans DTD
Posté : 08 juil. 2012, 12:27
Bonjour, je suis nouveau ici, bonjour à tous !
Voici le premier soucis qui me fait venir à vous.
J'ai une petite application PHP5 qui reçoit de la part d'un logiciel (dont je n'ai pas la main sur la syntaxe) des fichiers XML par upload FTP.
Les fichiers ont un temps de copie, et souvent mon script commence à ouvrir un XML alors qu'il n'a pas fini d'être copié. Résultat ça engendre des erreurs.
Avant mon ancienne application m'envoyait des XML faisant référence à une DTD, donc avec SimpleXML je n'avais qu'à utiliser l'option LIBXML_DTDVALID et je pouvais faire patienter les fichiers encore incomplet car ils ne passaient pas les contrôles.
Ce que je cherche idéalement, ça serait une option pour SimpleXML qui me permette de valider que mon fichier XML est terminé, c'est à dire que le corps à correctement été fermé. Le contrôle de la structure je vais en faire mon deuil.
Si SimpleXML ne sait pas faire (j'ai lu la page de manuel, rien ne m'a sembler coller à mon besoin) connaissez vous une autre solution pas trop compliquée ?
Voici le premier soucis qui me fait venir à vous.
J'ai une petite application PHP5 qui reçoit de la part d'un logiciel (dont je n'ai pas la main sur la syntaxe) des fichiers XML par upload FTP.
Les fichiers ont un temps de copie, et souvent mon script commence à ouvrir un XML alors qu'il n'a pas fini d'être copié. Résultat ça engendre des erreurs.
Avant mon ancienne application m'envoyait des XML faisant référence à une DTD, donc avec SimpleXML je n'avais qu'à utiliser l'option LIBXML_DTDVALID et je pouvais faire patienter les fichiers encore incomplet car ils ne passaient pas les contrôles.
Ce que je cherche idéalement, ça serait une option pour SimpleXML qui me permette de valider que mon fichier XML est terminé, c'est à dire que le corps à correctement été fermé. Le contrôle de la structure je vais en faire mon deuil.
Si SimpleXML ne sait pas faire (j'ai lu la page de manuel, rien ne m'a sembler coller à mon besoin) connaissez vous une autre solution pas trop compliquée ?