Иногда мне приходится проверять валидность некоторых больших xml-файлов по xsd-файлу. Самый большой xml-файл, который я получил, имел размер около 1,5 ГБ.
xmllint
занял всю мою оперативную память и почти все пространство подкачки, что в общей сложности составило 18 ГБ. Следовательно, процесс валидации продолжался 24 часа.
Мой вопрос: есть ли альтернатива, xmllint --schema
которая потребляет меньше памяти, возможно, используя какие-то потоковые функции вместо загрузки файла в память?
решение1
Я не тестировал эти валидаторы, но из первых уст / небольшого поиска:
- XMLStarlet- может использоваться и для других целей
msv
- Многосхемный валидатор SunHaXML
- haskell xml tools содержит утилиты командной строки (одна из них является валидатором)xsltproc
также следует проверить документы при запуске
Существует гораздо больше возможностей, поскольку большинство утилит автоматически проверяют XML-документ, например xsltproc
, .
решение2
В библиотеке пакетов моей системы Linux я нашел xmlcopyeditor. Я использовал его для проверки XML-файла, а также для его редактирования. На странице руководства утверждается, что он делает "проверку DTD/XML Schema/RELAX NG, XSLT, XPath, удобную печать, подсветку синтаксиса, сворачивание, завершение/блокировку тегов, проверку орфографии/стиля и, в Windows, импорт/экспорт документов Microsoft Word без потерь". Но я на самом деле не проверял, насколько хорошо он делает что-либо из этого. Я знаю, что удобную печать не работало, пока начальный и конечный теги не совпадали должным образом. http://xml-copy-editor.sourceforge.net/