有没有办法在PHP中对XML流进行XSD验证

tom*_*asz 7 php xml validation stream

假设我希望能够验证50GB + XML文件是否符合给定的XSD.我可以用

DOMDocument::load & DOMDocument::schemaValidate
Run Code Online (Sandbox Code Playgroud)

但是这将花费所有时间来加载,并且通常会耗尽所有可用内存.有没有办法将XSD提供给SAX或任何其他类型的流处理器并让它验证一切正常?

Her*_*eri 8

您可以使用XMLReader:

$reader = new XMLReader();
$reader->open('xmlfile.xml');
$reader->setSchema('schemafile.xsd');
while($reader->read());
$reader->close();
Run Code Online (Sandbox Code Playgroud)