2010-12-09 12 views
1

Ich arbeite mit XML-Dateien, die bis zu 10000 Ereignisse in ihnen jeweils mit etwa 30 Zeilen haben. So könnte jede XML-Datei 300000 Zeilen haben. Ich möchte die XML-Validierung in meinen Pre-Processing-Prozess integrieren und frage mich, welche XML-Validierungsoptionen auf einer Linux-Plattform am schnellsten verfügbar sind. Zum Auftakt mit I als Prüfung analysiert xmllint und festgestellt, dass die 10000 Ereignisdateien nahmen bis zu 1 Sekunde (mit dem ersten einer satten 5 Sekunden unter):Was ist der schnellste XML-Validator für Linux-Plattform

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 

Hat jemand schneller xml Validatoren, die ich verwenden könnte um das zu erreichen?

A

+1

Suchen Sie tatsächlich verwendet, um die XML-Validierung (wie in sicherstellen, dass es zu einer DTD entspricht) oder einfach nur prüfen, ob es gut gebildet? Von der Befehlszeile aus sieht es so aus, als ob du Letzteres tust. Wenn Sie etwas schneller als libxml2 suchen, werfen Sie einen Blick auf AsmXml (http://tibizein.net/asm-xml/index.html) oder RapidXml (http://rapidxml.sourceforge.net/). – Dmitri

+1

Bonus Tipp: Bash 'for ... in' nimmt Datei-Globs (also keine Notwendigkeit,' ls' auszuführen): 'für Datei in xml * xml' funktioniert gut. – Dmitri

+0

nur auf der Suche nach gut gebildet wirklich. Danke für den Tipp auf Datei-Globs und ich werde asmxml und rapidxml betrachten. thx – amadain

Antwort

1

Ich glaube RXP der schnellsten Validieren von XML-Parser ist oder zumindest hat es diesen Ruf. Ich habe seinen Python-Bindung aber nie die Ebene C.

Seine erhältlich von http://www.cogsci.ed.ac.uk/~richard/rxp.html

+0

Es ist nur für Windows/DOS. –

+0

@AdamArold es ist für Unix und Windows verfügbar. Die Quelle ist unter GPL verfügbar und kann unter Unix erstellt werden. Eine Windows-Binärdatei wird auch veröffentlicht - um den Autor zu zitieren "Eine MSDOS/Windows-Programmdatei ist hier (nicht in der Regel die neueste Version)". – Meitham

+0

Sorry es scheint, ich habe etwas verpasst. Bearbeiten Sie Ihre Antwort, damit ich den Downvote entfernen kann. –

Verwandte Themen