Hoi,

ik ben al een tijdje bezig met het het maken van een script waarbij ik kan kijken of een bestand een xml-feed is of niet.
Eerst probeerde ik te kijken naar de content-type van een bestand, of die text/xml, application/rss+xml, application/rdf+xml of application/atom+xm is. Dit lukte opzich wel, totdat ik erachter kwam dat de feed van wikipedia text/html is. Als ik text/html toe zou staan, dan zouden alle htmlpagina's ook een "xml-feed" zijn.

Dus nu probeer ik het zo:


<?php
// ...
if(!@simplexml_load_file($_GET['url'])){
	echo 'Fout';
}
else{
	echo 'Goed';
}
// ...
?>

Dit is lelijke code, én het werkt niet goed. Namelijk, de feed van wikipedia is "niet goedgekeurd":
http://zjapske.no-ip.org/hoppelblog/validateAjax.php?url=http://en.wikipedia.org/w/index.php?title=Special:RecentChanges&feed=atom

De feed van phphulp weer wel:
http://zjapske.no-ip.org/hoppelblog/validateAjax.php?url=http://www.phphulp.nl/feeds/php_forum.php

En een gewoon php-bestand is ook "goedgekeurd":
http://zjapske.no-ip.org/hoppelblog/validateAjax.php?url=http://blog.netvibes.com/

Weet iemand een betere manier om te controleren of een bestand een xml-bestand is?
Niet over nagedacht... xhtml bestanden met een xml-declaratie gaan nu dus ook gewoon door...

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
...

Volgens mij moet ik nog maar een regexp maken.

Reageren