Valider la syntaxe d'un fichier XML sans DTD

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Valider la syntaxe d'un fichier XML sans DTD

Re: Valider la syntaxe d'un fichier XML sans DTD

par Adanorm » 09 juil. 2012, 22:16

J'ai trouvé !

Code : Tout sélectionner

<?php $xml = new DOMDocument; if ($xml->load("test.xml") === true ) { echo "ok"; } else { echo "ko"; } ?>
DOM est très strict, il balance un warning pour chaque erreur de grammaire XML, et le résultat du test passe à false dans le test.
Merci pour votre assistance !

Re: Valider la syntaxe d'un fichier XML sans DTD

par Adanorm » 09 juil. 2012, 19:48

Salut,

@Mazarini : Oui je sais bien, je voudrais éviter un code crado qui détecterait juste la bonne fermeture mais négligerait une structure complétement endommagée au milieu du fichier. J'utiliserais effectivement ce genre de contrôle si je ne trouve rien ...

@dix2 : merci pour les pistes, je vais regarder ceci.

Je vais aussi explorer ceci : DOMXML_LOAD_VALIDATING, j'ai l'impression que ça pourrait être pas mal.

Re: Valider la syntaxe d'un fichier XML sans DTD

par dix2 » 09 juil. 2012, 09:44

salut,

il n'y a pas que les DTD
il y a aussi les XML Schema et Relax NG

@+
dix2

Re: Valider la syntaxe d'un fichier XML sans DTD

par Mazarini » 09 juil. 2012, 09:20

Normalement, un fichier XML a un élément racine unique. tu peux vérifier la présence du tag de fermeture de cet élément en fin de fichier.

Valider la syntaxe d'un fichier XML sans DTD

par Adanorm » 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 ?