oxml
🌐 FR , Changer de langue
llms.txt

Architecture & Compromis

Comparatif technique : oxml face aux bibliothèques Rust

Une évaluation technique honnête des compromis architecturaux entre quick-xml, roxmltree, xot, xee et libxml2. Quand choisir oxml, et quand privilégier une alternative.

Matrice des fonctionnalités de l'écosystème

Chaque bibliothèque XML adopte des compromis délibérés entre empreinte mémoire, capacité de mutation, débit de streaming et ergonomie de requêtes. Le tableau ci-dessous compare les principales bibliothèques Rust en octobre 2026.

Fonctionnalité oxml quick-xml roxmltree xot xee
Modèle principal DOM arène mutable Pull parser (Streaming) Arbre lecture seule Arbre arène mutable Arbre lecture seule
Sécurité mémoire #![forbid(unsafe_code)] Safe Rust Safe Rust Safe Rust Safe Rust
Mutation DOM Générationnelle O(1) Aucune (Flux d'événements) Aucune (Lecture seule) Mutation arène Aucune (Lecture seule)
Support XPath W3C XPath 1.0 Aucun Aucun (Itérateur seul) Aucun (Itérateur seul) W3C XPath 3.1
Schéma XML (XSD) Partiel (95.2% W3C) Aucun Aucun Aucun Aucun
WebAssembly Natif (<220 Ko) Supporté (Lecteur) Supporté (Lecture seule) Supporté (Arbre) Supporté (Moteur)
Agents IA (MCP) Natif (oxml-mcp) Aucun Aucun Aucun Aucun

Comparaison détaillée point par point

1. oxml face à quick-xml

Forces de quick-xml : Avec plus de 379 millions de téléchargements, quick-xml est la référence en matière de streaming pull-parsing en Rust. Ne construisant aucun arbre en mémoire, il atteint des débits entre 1,2 Go/s et 1,5 Go/s sans allocation sur le tas. Pour les fichiers de logs de plusieurs gigaoctets ou les pipelines ETL de streaming, quick-xml est le choix optimal.

Avantages d'oxml : quick-xml ne propose ni DOM, ni requêtes XPath, ni validation XSD. Dès lors que votre application doit cibler des nœuds avec des expressions XPath complexes, modifier des attributs ou sérialiser du XML formaté, oxml fournit un arbre en arène clé en main.

2. oxml face à roxmltree

Forces de roxmltree : roxmltree (>66M téléchargements) est une référence de compacité pour l'inspection de documents en lecture seule. N'autorisant aucune modification, il stocke les nœuds dans un tableau contigu avec une empreinte mémoire minime (1,5x à 2x la taille du document).

Avantages d'oxml : roxmltree est strictement en lecture seule et ne dispose d'aucun moteur XPath intégré. oxml allie un arbre mutable complet, l'évaluation XPath 1.0 et la validation de schémas.

3. oxml face à xot

Forces de xot : xot est une bibliothèque d'arbres mutables traitant les espaces de noms et les commentaires comme des citoyens de premier ordre, reposant également sur un allocateur d'arène.

Avantages d'oxml : oxml propose une suite complète unifiée : XPath 1.0, validation XSD partielle (xmlschema), WebAssembly, binaire CLI et serveur MCP pour agents IA, le tout synchronisé sous un numéro de version unique.

4. oxml face à xee

Forces de xee : Développé par Paligo, xee est l'implémentation Rust de pointe pour W3C XPath 3.1 et XSLT 3.0 partiel. Si vos besoins requièrent des expressions régulières, des cartes dynamiques ou des feuilles de style XSLT, choisissez xee.

Avantages d'oxml : oxml se focalise sur le standard W3C XPath 1.0 couplé à un DOM mutable, la validation XSD et l'intégration d'agents IA (MCP).

Quand ne pas utiliser oxml — En toute transparence

Une démarche technique rigoureuse repose sur la clarté des limites. Nous recommandons d'autres outils dans les situations suivantes :

  1. Streaming sur flux de plusieurs gigaoctets : Utilisez quick-xml pour éviter l'allocation d'un arbre mémoire.
  2. Parcours strict en lecture seule : Utilisez roxmltree pour une empreinte mémoire minimale sans besoin de mutation ni XPath.
  3. XPath 3.1 et transformations XSLT : Utilisez xee ou Saxon.
  4. Validation XSD 1.1 exhaustive : Utilisez libxml2 ou Saxon en attendant la maturité 1.0 complète de xmlschema.