Au bureau, nous écrivons actuellement une application qui va générer des fichiers XML sur un schéma qui nous a été donné. Nous avons le schéma dans un fichier .XSD.
Existe-t-il des outils ou des bibliothèques que nous pouvons utiliser pour des tests automatisés afin de vérifier que le XML généré correspond au schéma?
Nous préférerions des outils gratuits appropriés à une utilisation commerciale, bien que nous ne regroupions pas le vérificateur de schéma, il ne doit donc être utilisable par les développeurs que pendant le développement.
Notre langage de développement est C ++ si cela fait une différence, bien que je ne pense pas qu'il devrait comme nous pourrions générer le fichier xml et ensuite faire la validation en appelant un programme distinct dans le test.
la source
Réponses:
Après quelques recherches, je pense que la meilleure réponse est Xerces , car il implémente tout XSD, est multiplateforme et largement utilisé. J'ai créé un petit projet Java sur github pour valider à partir de la ligne de commande en utilisant l'analyseur JRE par défaut, qui est normalement Xerces. Cela peut être utilisé sur Windows / Mac / Linux.
Il existe également une version C ++ de Xerces disponible si vous préférez l'utiliser. L' utilitaire StdInParse peut être utilisé pour l'appeler à partir de la ligne de commande. En outre, un commentateur ci-dessous pointe vers cet utilitaire d'encapsulation plus complet .
Vous pouvez également utiliser xmllint, qui fait partie de libxml . Vous l'avez peut-être déjà installé. Exemple d'utilisation:
Un problème est que libxml n'implémente pas toutes les spécifications, vous pouvez donc rencontrer des problèmes :(
Alternativement, si vous êtes sous Windows, vous pouvez utiliser msxml , mais vous aurez besoin d'une sorte de wrapper pour l'appeler, comme celui de l'interface graphique décrit dans cet article DDJ . Cependant, il semble que la plupart des gens sous Windows utilisent un éditeur XML, tel que Notepad ++ (comme décrit dans la réponse de Nate ) ou XML Notepad 2007 comme suggéré par SteveC (il existe également plusieurs éditeurs commerciaux que je ne mentionnerai pas ici).
Enfin, vous constaterez que différents programmes donneront malheureusement des résultats différents. Cela est largement dû à la complexité de la spécification XSD. Vous voudrez peut-être tester votre schéma avec plusieurs outils.
MISE À JOUR : J'ai développé cela dans un article de blog .
la source
xmllint
n'est pas compatible avec les expressions rationnelles XML, malheureusement, donc certaines expressions rationnelles XML valides ne le traverseront pasIl existe un plugin pour Notepad ++ appelé XML Tools qui offre une vérification et une validation XML par rapport à un XSD.
Vous pouvez voir comment l'utiliser ici .
la source
XML
lui - même fait référence à unXSD
fichier, par exemplexsi:noNamespaceSchemaLocation="file.xsd"
, alors XML Tools essaiera de l'utiliser au lieu de vous donner une boîte de dialogue "set".xmlstarlet est un outil en ligne de commande qui fera cela et plus encore:
Dans votre cas, l'utilisation serait dans le sens de:
la source
Pour Windows, il existe le Bloc-notes XML gratuit 2007 . Vous pouvez sélectionner des XSD pour valider
MISE À JOUR: encore mieux, utilisez Notepad ++ avec le plugin XML Tools
la source
Le validateur de schéma XML en ligne de DecisionSoft vous permet de comparer un fichier XML avec un schéma donné.
la source
J'utilise Xerces:
http://xerces.apache.org/xerces-c/
la source
sudo apt install libxerces-c-samples
puis vérifier le document avecStdInParse -v=always -n -s < document.xml
.http://www.xmlvalidation.com/
(Assurez-vous de cocher la case "Valider par rapport au schéma XML externe")
la source
J'apprends juste le schéma. J'utilise RELAX NG et j'utilise xmllint pour valider. Je suis frustré par les erreurs provenant de xmlllint. Je souhaite qu'ils soient un peu plus informatifs.
S'il y a un mauvais attribut dans le XML, alors xmllint vous indique le nom de l'attribut non pris en charge. Mais s'il vous manque un attribut dans le XML, vous obtenez simplement un message indiquant que l'élément ne peut pas être validé.
Je travaille sur du XML très compliqué avec des règles très compliquées, et je suis nouveau dans ce domaine, donc la recherche de l'attribut manquant prend beaucoup de temps.
Mise à jour: je viens de trouver un outil java que j'aime beaucoup. Il peut être exécuté à partir de la ligne de commande comme xmllint et il prend en charge RELAX NG: https://msv.dev.java.net/
la source
J'ai trouvé ce validateur en ligne de 'corefiling' assez utile -
http://www.corefiling.com/opensource/schemaValidate.html
Après avoir essayé quelques outils pour valider mon xsd, c'est celui qui m'a donné des informations détaillées sur l'erreur - j'ai donc pu corriger l'erreur dans le schéma.
la source
Un éditeur XML pour une validation XML simple et rapide est disponible sur http://www.xml-buddy.com
Il vous suffit d'exécuter le programme d'installation et après cela, vous pouvez valider vos fichiers XML avec une application de bureau facile à utiliser ou la ligne de commande. De plus, vous bénéficiez également d'une assistance pour Schematron et RelaxNG. La validation par lots est également prise en charge ...
Mise à jour 13/01/2012: L'outil de ligne de commande est gratuit à utiliser et utilise Xerces comme analyseur XML.
la source
IntelliJ IDEA est un excellent outil visuel pour valider et générer XSD à partir de XML, intuitif et simple.
la source
Vous pouvez connecter votre schéma XML à Intellisense de Microsoft Visual Studio. Cette option vous offre à la fois une validation en temps réel ET une saisie semi-automatique, ce qui est tout simplement génial.
J'ai ce scénario exact en cours d'exécution sur ma copie gratuite de Microsoft Visual C ++ 2010 Express.
la source
Un autre validateur de schéma XML en ligne (XSD): http://www.utilities-online.info/xsdvalidation/ .
la source
J'ai tendance à utiliser xsd de Microsoft pour générer le xsd à partir d'un fichier .NET. J'analyse également des sections du xml en utilisant xmlstarlet. Le dernier outil gratuit qui vous serait utile est altovaxml, qui est disponible à cette URL: http://www.altova.com/download_components.html .
Cela me permet d'analyser tous les fichiers xml en sélectionnant le xsd à utiliser en analysant le xml.
Pour générer le xml j'utilise: xsd DOTNET.dll / type: CFGCLASS & renommer schema0.xsd CFGCLASS.xsd
Pour obtenir le nom xsd que j'utilise: xmlstarlet sel -t -m / XXX / * -v nom-local () $ 1 | sed 's / $ //'
Cela me permet de récupérer le bon XSD en utilisant une balise d'élément dans le fichier xml.
Le résultat net est que je peux appeler une fonction bash pour analyser tous les fichiers XML et les vérifier. Même s'ils se trouvent dans plusieurs sous-répertoires.
la source