xsd校验,获取无效的对象

2024-09-27 07:18:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大的XML文件(3mb+),我有一个XSD来验证它。你知道吗

我正在使用python和LXML。我从这个脚本开始<;>;。验证很好,包括给我行号。但问题是文件在一行上,所以当我验证时,得到的只是第1行上显示的错误。当我使用漂亮的打印分割线为我它的最大值在第65535行。你知道吗

谢谢!你知道吗


Tags: 文件ltgt脚本错误xmllxml行上
1条回答
网友
1楼 · 发布于 2024-09-27 07:18:04

Pretty-print your XML添加换行符。然后把它通过你的验证器得到一个更有用的行号。你知道吗

编辑:在重读您的问题时,我看到您使用Notepad++添加了换行符。但是,在验证XML时,LXML显然有一个大小限制。你知道吗

有关此问题的一般方法,请参见Validating a HUGE XML file。尤其是accepted answer开头是:

Instead of using a DOMParser, use a SAXParser. This reads from an input stream or reader so you can keep the XML on disk instead of loading it all into memory.

基本上,您需要使用SAX提供的流方法。因此,如果您的需求是必须用Python验证您的文件,那么您需要找到基于流的验证方法。(也许LXML提供流式验证?)你知道吗

但是,如果您的验证需求更灵活,那么可以考虑一个专用工具,例如XMLStarlet。你知道吗

例如,下面是如何根据XMLStarlet entry on Wikipedia中的XSD验证XML文件:

xmlstarlet val -e -s my.xsd my.xml

以及使用XMLStarlet on very large files的证明。你知道吗

相关问题 更多 >

    热门问题