0

我正在尝试完全验证可能由用户在完全发布和发布之前发布的 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>';
    }
}
4

2 回答 2

2

使用 DOM 方法:

$doc = new DOMDocument();
$doc->load($xmlPath);
if (!$doc->validate()) {
    die("OH NOES!");
    // ... or perform your own restore-to-a-backup procedure.
}
于 2009-08-14T03:50:33.093 回答
1

您可以“告诉”libxml 加载 dtd 并在加载 xml 文档时立即对其进行验证。

$doc->load( $tempFileName, LIBXML_DTDLOAD|LIBXML_DTDVALID )

http://php.net/libxml.constants

于 2009-08-14T08:07:52.687 回答