2010-12-09 22 views
1

Je travaille avec des fichiers xml contenant jusqu'à 10000 événements, chacun avec environ 30 lignes. Donc chaque fichier xml pourrait avoir 300 000 lignes. Je veux intégrer la validation xml dans mon processus de pré-traitement et je me demandais quelles sont les options de validation XML les plus rapides disponibles sur une plate-forme Linux. Pour commencer, j'analysé xmllint comme validateur et a constaté que les 10000 fichiers d'événements ont jusqu'à 1 sec (avec la première prenant 5 secondes énorme):Quel est le validateur xml le plus rapide pour la plate-forme Linux?

bash$ for file in `ls xml*xml`; do echo "checking $file of event length `grep '<event ' $file | wc -l`"; time xmllint --noout $file; result=`echo $?`; if [[ "$result" == "0" ]]; then echo "$file : valid"; else echo "$file : invalid returned $result"; fi; done 

checking xmlEventLog_2010-03-23T06:31:49_PFS_1_2.xml of event length 810 

real 0m0.251s 
user 0m0.036s 
sys  0m0.020s 
xmlEventLog_2010-03-23T06:31:49_PFS_1_2.xml : valid 
checking xmlEventLog_2010-03-23T06:42:36_PFS_1_1.xml of event length 10001 

real 0m5.363s 
user 0m0.564s 
sys  0m0.292s 
xmlEventLog_2010-03-23T06:42:36_PFS_1_1.xml : valid 
checking xmlEventLog_2010-03-23T07:27:36_PFS_1_2.xml of event length 10000 

real 0m1.303s 
user 0m0.732s 
sys  0m0.232s 
xmlEventLog_2010-03-23T07:27:36_PFS_1_2.xml : valid 
checking xmlEventLog_2010-03-23T07:54:42_PFW_1_1.xml of event length 990 

real 0m0.098s 
user 0m0.072s 
sys  0m0.024s 
xmlEventLog_2010-03-23T07:54:42_PFW_1_1.xml : valid 
checking xmlEventLog_2010-03-23T08:10:32_PFS_1_2.xml of event length 10000 

real 0m0.971s 
user 0m0.712s 
sys  0m0.240s 
xmlEventLog_2010-03-23T08:10:32_PFS_1_2.xml : valid 
checking xmlEventLog_2010-03-23T08:56:57_PFS_1_2.xml of event length 10000 

real 0m1.252s 
user 0m0.724s 
sys  0m0.184s 
xmlEventLog_2010-03-23T08:56:57_PFS_1_2.xml : valid 
checking xmlEventLog_2010-03-23T09:26:10_PFS_1_2.xml of event length 10000 

real 0m0.920s 
user 0m0.644s 
sys  0m0.260s 
xmlEventLog_2010-03-23T09:26:10_PFS_1_2.xml : valid 

Quelqu'un at-il plus rapide validateurs xml que je pourrais utiliser pour y parvenir?

A

+1

Vous cherchez réellement à valider le XML (comme, vérifier qu'il est conforme à une DTD) ou tout simplement vérifier qu'il est bien formé? De la ligne de commande, il semble que vous faites le dernier. Si vous cherchez quelque chose de plus rapide que libxml2, jetez un oeil à AsmXml (http://tibleiz.net/asm-xml/index.html) ou RapidXml (http://rapidxml.sourceforge.net/). – Dmitri

+1

Astuce bonus: Bash 'for ... in' prend les globs de fichiers (donc pas besoin d'exécuter' ls'): 'pour le fichier dans xml * xml' fonctionne très bien. – Dmitri

+0

juste à la recherche de vraiment bien formé. Merci pour l'astuce sur les globs de fichiers et je vais regarder asmxml et rapidxml. thx – amadain

Répondre

1

Je crois RXP est le plus rapide de valider l'analyseur XML ou au moins il a cette réputation. Je l'ai utilisé le python de liaison, mais jamais la plaine C.

Son disponible à partir http://www.cogsci.ed.ac.uk/~richard/rxp.html

+0

C'est seulement pour windows/dos. –

+0

@AdamArold est disponible pour Unix et Windows. La source est disponible sous GPL et peut être construite sur Unix. Un binaire Windows est également publié - pour citer l'auteur "Un exécutable MSDOS/Windows est ici (pas généralement la dernière version)". – Meitham

+0

Désolé, il semble que j'ai raté quelque chose. Modifiez votre réponse afin que je puisse supprimer la downvote. –