我正在尝试完全验证用户在完全发布和生存之前发布的xml文件 - 它基本上有点像sitemap.xml,它绝对无法发布没有防错(是的,我也有自己的自定义dtd)。
我还在考虑实现一个存储系统,以便存储说明,最后2-3个版本只是因为它是一个真正的高优先级类型的东西。
任何提示?
编辑:这是我目前所拥有的,但在某些情况下,我相信它在xml不完全有效时已经过验证:
$dom = new DOMDocument();
if ( $dom->load( $tempFileName ) ) {
if ( $dom->validate() ) {
echo '<p>XML is valid. Overwriting sitemap.xml.</p>';
file_put_contents( 'sitemap.xml', $sitemapXML->asXML() );
} else {
echo '<p>XML is not valid. Please correct.</p>';
}
}
答案 0 :(得分:2)
使用DOM方法:
$doc = new DOMDocument();
$doc->load($xmlPath);
if (!$doc->validate()) {
die("OH NOES!");
// ... or perform your own restore-to-a-backup procedure.
}
答案 1 :(得分:1)
您可以“告诉”libxml加载dtd并在加载xml文档时立即对其进行验证。
$doc->load( $tempFileName, LIBXML_DTDLOAD|LIBXML_DTDVALID )