我需要在php应用程序中使用xsd文件验证一些xml文件。我遇到的问题是当我使用domdocument或xmlreader时,我在执行模式验证时不断获得空白页面(ERR_EMPTY_RESPONSE)。我没有任何错误。
$reader = new XMLReader();
$reader->open("../xml/testxml.xml");
echo $reader->setSchema("../xml/validation.xsd") ? 'valid' : 'invalid';
$doc = new DOMDocument();
$doc->load("../xml/testxml.xml");
echo $doc->schemaValidate("../xml/validation.xsd") ? 'valid' : 'invalid';
两个文件和存在xml / xsd的路径。 php版本是5.3.1& libxml2版本是2.7.3,我在OSX环境中工作。
更新:替代方法
我找到了让它运转的方法。而不是使用负载($ path)& schemaValidate($ path),我使用过loadXml($ string)& schemaValidateSource($字符串)。因此,我不是在加载函数中给出文件路径,而是通过file_get_contents()手动加载内容并将其提供给loadXml函数。对于xsd文件也一样。
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadXml(file_get_contents("../xml/testxml.xml"));
echo $doc->schemaValidateSource(file_get_contents("../xml/validation.xsd")) ? 'valid' : 'invalid';