Ich verwende lxml
in Python, um eine Anzahl von XML-Dokumenten gegen eine XML-Schema-Definition zu validieren. Eine große Anzahl dieser Dokumente wird nicht validiert - und im Moment werden sie nicht erwartet -, aber es wäre nützlich, wenn ich für die Zwecke der Berichterstattung berechnen könnte, wie gültig sie sind. Ich habe die Möglichkeit, xmllint
oder andere Befehlszeilen-Tools zu verwenden, sollten diese in der Lage sein, eine nützliche Statistik zur Verfügung zu stellen.XMLSchema: Kann berechnet werden, wie gültig ein ungültiges Dokument ist (z. B. in Prozent)?
5
A
Antwort
1
lxml
Parser bieten eine Möglichkeit, a list of the errors zu erhalten, während beim Versuch, das Dokument zu analysieren. Kombinieren Sie dies mit dem Parser recover
keyword argument und man bekommt etwas wie folgt aus:
# Warning, untested, may not work
parser = etree.XMLParser(recover=True)
it_would_be_a_tree = etree.parse(your_xml_data, parser)
total_errors = len(parser.error_log)
Dann können Sie den Prozentsatz der Datei berechnen, die total_errors
darstellt. Sie könnten eine naive Maßnahme wie Fehler pro Zeile oder Fehler pro Zeichen ohne Probleme verwenden. Kompliziertere Maßnahmen sind auch möglich, wenn it_would_be_a_tree
tatsächlich eine tree
Struktur ist (z. B. total_elements/total_errors
).
Es ist nicht das Parsing, das ist das Problem; Die Dateien werden gut analysiert, da sie wohlgeformtes XML sind. Sie sind nur nicht * gültig * in Bezug auf das XMLSchema. –