Às vezes, tenho que verificar a validade de alguns arquivos xml grandes em relação a um arquivo xsd. O maior arquivo xml que recebi tinha um tamanho próximo a 1,5 GB.
xmllint
ocupei toda a minha RAM e quase todo o espaço de troca, para um uso total de memória de 18 GB. Consequentemente, o processo de validação durou 24 horas.
Minha dúvida: Existe alguma alternativa xmllint --schema
que consuma menos memória, talvez fazendo uso de alguns recursos de streaming em vez de carregar o arquivo na memória?
Responder1
Não testei esses validadores, mas de cabeça/pequena pesquisa:
- XMLStarlet- também pode ser usado para outras coisas
msv
- Validador multiesquema SunHaXML
- ferramentas haskell xml contém utilitários de linha de comando (um deles é um validador)xsltproc
também deve verificar os documentos na inicialização
Há muito mais opções, pois a maioria dos utilitários validará automaticamente o documento XML, como, por exemplo, xsltproc
.
Responder2
Na biblioteca de pacotes do meu sistema Linux encontrei o xmlcopyeditor. Usei-o para verificar um arquivo XML e também para editá-lo. A página de manual afirma que faz "validação de esquema DTD/XML/RELAX NG, XSLT, XPath, impressão bonita, destaque de sintaxe, dobramento, conclusão/bloqueio de tags, verificação ortográfica/estilo e, no Windows, importação/exportação sem perdas de Microsoft Documentos do Word." mas eu realmente não testei quão bem ele faz nada disso. Eu sei que a impressão bonita não funcionou até que as tags inicial e final correspondessem corretamente. http://xml-copy-editor.sourceforge.net/