IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML Discussion :

Xerces vs libxml2 : quelle bibliothèque pour la validation XSD de XML ?


Sujet :

XML

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2020
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2020
    Messages : 41
    Points : 75
    Points
    75
    Par défaut Xerces vs libxml2 : quelle bibliothèque pour la validation XSD de XML ?
    Salut à tous !

    Est-ce que quelqu'un saurait quel parser XML il vaut mieux utiliser entre Xerces et libxml2 pour faire de la validation à partir de fichiers XSD ?

    J'ai fait mon petit benchmark des parsers XML qui existent (Xerces, libxml2, RapidXml, pugixml, TinyXML, Expat,...) et on dirait bien que seulement Xerces et libxml2 proposent de valider les XML avec des XSD.

    J'ai donc implémenté un parser avec libxml2 qui me paraissait être celui qui correspondait le plus à mon besoin car je dois parser de gros fichiers. Cela dit j'ai également lu que Xerces était assez performant sur les gros fichiers aussi donc pas évident de savoir lequel choisir finalement...

    J'ai ensuite chronométré un parser avec Xerces et un parser avec libxml2 pour voir lequel des deux étaient le meilleur et à ma grande surprise le parser Xerces (donc pas celui que je veux implémenter à la base) semble être plus rapide.

    Sans la validation XSD, libxml2 est très légèrement plus rapide que Xerces que ce soit sur un gros ou un petit fichier mais la différence est assez faible.

    En revanche, sur un gros fichier et avec la validation XSD activée, Xerces est beaucoup plus rapide que libxml2 (peut-être 10 fois plus).

    Je voulais donc savoir s'il y avait une raison à cela et s'il était inutile que je m'acharne à utiliser libxml2 car j'ai l'impression que Xerces est meilleur à tous les niveaux...

    Cela dit j'ai essayé de trouver des infos pour pouvoir confirmer mon choix de changer vers Xerces notamment dans la documentation https://xerces.apache.org/xerces-c/ mais je n'ai pas trouvé d'explication convaincante pour la lenteur de libxml2 sur la validation XSD. Ce qui me fait me demander si je n'ai pas tout simplement mal codé mon parser libxml2...

    Y a-t-il donc une réponse universelle à la question : faut-il choisir Xerces ou libxml2 ? (le fait que Xerces soit plus difficile à utiliser que libxml2 ne serait pas un problème)

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 601
    Points
    188 601
    Par défaut


    As-tu regardé du côté des générateurs de code, à la https://www.codesynthesis.com/projects/xsd/, https://github.com/dkorolev/xplus-xsd2cpp (deux gratuits et libres, selon ta définition du terme), https://www.altova.com/xmlspy-xml-ed...vanced#CodeGen ou https://www.liquid-technologies.com/xml-schema-to-cpp (probablement les plus maintenus) ?

    Sinon, entre libxml2 et Xerces-C++, le premier est le plus maintenu des deux projets (le second, c'est surtout de la sécurité).

    Les bibliothèques les plus modernes et rapides en C++ sont probablement TinyXML et PugiXML, mais aucune des deux ne fait de validation. Saxon est la Rolls Royce actuelle en termes de traitement de XML, il a aussi une version dite "C/C++" (en fait, uniquement C++) sous la forme de SaxonC qui fait de la validation (uniquement XSD) : https://www.saxonica.com/saxon-c/doc...ples/samples_c / https://www.saxonica.com/saxon-c/doc...Validator.html.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

Discussions similaires

  1. Quelle bibliothèque pour une interface graphique C++
    Par peace_info dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 16/03/2007, 14h42
  2. Quelle bibliothèque pour gérer des contours actifs ?
    Par khayyam90 dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 06/12/2006, 13h58
  3. [VB6] Quelle bibliothèque pour Keypress??
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 02/06/2006, 12h04
  4. [C#][OpenGL] Quelle bibliothèque pour utiliser OpenGL en C#
    Par glKabuto dans le forum Windows Forms
    Réponses: 6
    Dernier message: 23/05/2006, 13h56
  5. Quelle Bibliothèque pour une IA d'un RTS ?
    Par methos69 dans le forum Bibliothèques
    Réponses: 9
    Dernier message: 11/02/2005, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo