我有一个大型XML文件(3 MB +),我有一个XSD来验证它。
我正在使用python和LXML。我从这个脚本<>开始。验证哪个好,包括给我行号。但是文件在一行上的问题,所以当我验证所有我得到的是在第1行显示的错误。当我使用漂亮的打印为我分割线时它最大化在65535行。
谢谢!
答案 0 :(得分:2)
Pretty-print your XML为其添加换行符。然后将它通过验证器以获得更有用的行号。
编辑:在重新阅读您的问题时,我发现您使用了Notepad ++来添加换行符。但是, LXML 在验证XML时显然存在大小限制。
有关此问题的一般方法,请参阅Validating a HUGE XML file。特别是,accepted answer以:
开头使用 SAXParser ,而不是使用 DOMParser 。这是从一个 输入流或读取器,以便您可以将XML保留在磁盘上而不是 将它全部加载到内存中。
基本上,您需要使用SAX提供的流式处理方法。因此,如果您的要求是必须使用Python验证文件,那么您需要找到基于流的验证方法。 (Perhap LXML 以流媒体方式提供验证?)
但是,如果您的验证要求更加灵活,请考虑使用XMLStarlet等专业工具。
例如,以下是XMLStarlet entry on Wikipedia中针对XSD验证XML文件的方法:
xmlstarlet val -e -s my.xsd my.xml