Comment valider un document xml avec php
J'ai fait une api xml demande pour mon site web.
mais parfois, certains clients m'envoyer un fichier xml non valide et je veux retourner une bonne réponse.
comment puis-je valider le xml?
édité:
Ok, je crois que j'ai demandé à une fausse question, je veux valider les noeuds, et si certains nœuds manquants puis-je retourner meilleure réponse.
J'ai utilisé pour valider cette avec php et j'ai vérifier tous les noeuds.
mais ce moyen est très difficile à modifier.
c'est mon xml exemple:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<mashhadhost>
<create>
<name>example.ir</name>
<period>60</period>
<ns>
<hostAttr>
<hostName>ns1.example.ir</hostName>
<hostAddr ip="v4">192.0.2.2</hostAddr>
</hostAttr>
</ns>
<contact type="holder">ex61-irnic</contact>
<contact type="admin">ex61-irnic</contact>
<contact type="tech">ex61-irnic</contact>
<contact type="bill">ex61-irnic</contact>
</create>
<auth>
<code>TOKEN</code>
</auth>
</mashhadhost>
vous pouvez également essayer de Traiter avec des erreurs XML
Vous devez nous fournir: un exemple de corriger XML (je présume que celui que vous avez posté est valide), votre DTD, un exemple (ou plus) de MAL XML et de la "meilleure réponse". Sinon, vous n'obtiendrez pas beaucoup d'aide.
na, il n'est même pas proche de ma question...
Les Googlers: voir cette réponse pour un 4-ligne-petit extrait de la validation XML sans DTD (par exemple: Google Merchant)
Vous devez nous fournir: un exemple de corriger XML (je présume que celui que vous avez posté est valide), votre DTD, un exemple (ou plus) de MAL XML et de la "meilleure réponse". Sinon, vous n'obtiendrez pas beaucoup d'aide.
na, il n'est même pas proche de ma question...
Les Googlers: voir cette réponse pour un 4-ligne-petit extrait de la validation XML sans DTD (par exemple: Google Merchant)
OriginalL'auteur Pooya | 2013-06-19
Vous devez vous connecter pour publier un commentaire.
Malheureusement XMLReader n'ai pas de valider beaucoup de choses dans mon cas.
Ici un petit morceau de la classe, j'ai écrit tout à l'heure:
Il fonctionne très bien avec des ruisseaux et des vfsStream ainsi que pour des fins de test.
DOMDocument::loadXML(): Empty string supplied as input
erreurOriginalL'auteur Francesco Casula
Si vous voulez seulement vérifier si le document est bien formé (vous n'avez pas de soins sur la DTD de validité, et de ne même pas avoir une DTD pour valider contre) utilisation Domdocument pour valider votre fichier, plutôt que de XMLReader, parce que XMLReader stream vous document et de ne pas le charger à la fois, de sorte méthode isValid() seulement le premier nœud. Vous pouvez essayer un code comme ceci:
libxml_use_internal_errors(true)
au lieu de supprimer les erreurs.OriginalL'auteur Amaynut
Vous pouvez utiliser
XMLReader::isValid()
.Remarque: Cette opération vérifie le noeud courant, pas l'ensemble du document.
OriginalL'auteur Praveen Kumar Purushothaman
La documentation de PHP est exactement ce dont vous avez besoin!
XML DOMDocument::valider
Je suis sûr que vous avez déjà défini les DTD, droit?
Il y a de légitime cas lorsque l'on ne disposera pas d'une DTD
OriginalL'auteur STT LCU
Vous pouvez utiliser la fonction PHP:-
Source:- http://php.net/manual/en/xmlreader.isvalid.php
OriginalL'auteur Vivek Sadh