我有一个超过100MB的大型XML文件,我想检查此文件的结构是否有效。
我可以尝试使用 DOMDocument
加载此文件;例如,我可以使用PHP XML解析器读取它,该解析器“允许您解析但不验证XML文档”。
是否有一种方法可以在不完全加载XML文件到内存中的情况下完成此操作?
我有一个超过100MB的大型XML文件,我想检查此文件的结构是否有效。
我可以尝试使用 DOMDocument
加载此文件;例如,我可以使用PHP XML解析器读取它,该解析器“允许您解析但不验证XML文档”。
是否有一种方法可以在不完全加载XML文件到内存中的情况下完成此操作?
想一想你在说什么。你想对不在内存中的数据进行操作。这根本没有意义...如果你想从操作中引用它,它最终必须在内存中。
如果你不想一次性将数据加载到内存中,可以采用分而治之的方法。如果文件非常大,你可以在多个进程中运行MapReduce作业,但这并不会减少使用的内存量。
如果您只想检查XML结构是否有效,可以使用PHP的XML解析器。它不会根据DTD验证文档,这就是它所说的不会验证的含义。
在解析XML时,如果发现其结构无效,则可能返回所有这些错误代码。