Php sıkı xml doğrulama

2 Cevap php

Olmadan biraz bir sitemap.xml gibi temelde ve kesinlikle yayımlanamaz hata - Ben tam olarak fully yayınlanan ve yaşamak olmadan bir kullanıcı tarafından yayınlanan edilebilir bir xml dosyasını doğrulamak için çalışıyorum geçirmez (evet, ben de bunun için kendi özel dtd var).

Ben de (o şey gerçek bir yüksek öncelikli bir tip gibi) sadece örtmek, diyelim ki son 2-3 sürümlerini saklamak diye bir depolama sistemi uygulanması düşünüyordum.

Herhangi bir ipucu?

Düzenleme: Burada ne var şu anda ama bazı durumlarda ben xml aynen geçerli değildi zaman valide inanıyoruz:

$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>';
    }
}

2 Cevap

DTD yüklemek ve xml belge yüklendiğinde hemen karşı doğrulamak için libxml'e "söyle" olabilir.

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

bkz http://php.net/libxml.constants

DOM yöntemlerinin kullanılması:

$doc = new DOMDocument();
$doc->load($xmlPath);
if (!$doc->validate()) {
    die("OH NOES!");
    // ... or perform your own restore-to-a-backup procedure.
}