Bon, j’ai beau cherché j’ai du mal… J’aimerais dans un premier temps pouvoir supprimer un noeud à l’aide de DOM dans un document XML. J’ai vu ici qu’il fallait valider le document, je viens de passer pas mal de temps, mais j’ai enfin réussi à créer le DTD pour mon fichier RSS en XML. J’utilise PHP5.
Voilà ou j’en suis :
test.php5 :
<?php
$fxml='test.xml';
$dom = new DomDocument();
$dom->load($fxml);
if ($dom->validate()) {
echo "Ce document est valide !\n";
}
$nya=$dom->getElementById("1");
var_dump($nya);
//$chan->removeChild($e);
$dom->save($fxml);
?>
Il me retroune : "Ce document est valide ! NULL"
test.xml :
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE rss SYSTEM "http://warzone.fr/rss.dtd">
<rss version="2.0">
<channel id="news">
<title>WarZone.fr</title>
<link>http://warzone.fr/</link>
<description>Toute l'actualité au quotidien sur les MMO, MMORPG, CORPG.</description>
<language>fr</language>
<copyright>Copyright 2006-2007 - WarZone.fr - Tous droits réservés</copyright>
<pubDate>Sat, 03 Feb 2007 17:29:00 +0100</pubDate>
<item id="1">
<title>Wahou3</title>
<link>http://google.fr</link>
<pubDate>today</pubDate>
<description>C'est trop bien !bis</description>
</item>
</channel>
</rss>
rss.dtd :
<!ELEMENT rss (channel)>
<!ATTLIST rss version CDATA #FIXED "2.0">
<!ELEMENT channel (title,link,description,language,copyright,pubDate,
(webMaster,category,image)?,item+)>
<!ATTLIST channel id CDATA #IMPLIED >
<!ELEMENT item (title,link,pubDate,description,
(author|jeu)?)>
<!ATTLIST item id CDATA #IMPLIED >
<!ELEMENT author (#PCDATA)>
<!ELEMENT jeu (#PCDATA)>
<!ATTLIST jeu name CDATA #IMPLIED >
<!ELEMENT category (#PCDATA)>
<!ELEMENT copyright (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT height (#PCDATA)>
<!ELEMENT image (url,title,link,(width|height|description)*)>
<!ELEMENT language (#PCDATA)>
<!ELEMENT link (#PCDATA)>
<!ELEMENT pubDate (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT url (#PCDATA)>
<!ELEMENT webMaster (#PCDATA)>
<!ELEMENT width (#PCDATA)>