2013-04-18 6 views
5

Używam lxml w Pythonie do sprawdzania poprawności wielu dokumentów XML w odniesieniu do definicji schematu XML. Duża liczba tych dokumentów nie sprawdza się - aw tej chwili nie są one wymagane - ale byłoby przydatne, gdybym mógł obliczyć, jak ważne są one, jako procent, do celów sprawozdawczych. Mam możliwość korzystania z xmllint lub innych narzędzi wiersza poleceń, jeśli są one w stanie dostarczyć użyteczną statystykę.XMLSchema: Czy możliwe jest obliczenie ważności nieprawidłowego dokumentu (np. W procentach)?

Odpowiedz

1

lxml parsery umożliwiają uzyskanie a list of the errors, które wystąpiły podczas próby analizowania dokumentu. W połączeniu z parser na recover keyword argument i masz coś takiego:

# 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) 

Następnie można obliczyć procentową pliku total_errors reprezentuje. Możesz użyć naiwnego pomiaru, jak błędy w linii lub błędy na znak bez żadnych problemów. Bardziej zaawansowane działania są również możliwe, jeśli it_would_be_a_tree jest w rzeczywistości strukturą tree (np.).

+1

To nie jest parsowanie, to jest problem; pliki parsują się dobrze, ponieważ są dobrze sformułowane xml. Po prostu nie są * poprawne * w stosunku do XMLSchema. –

Powiązane problemy