11550 sujets

JavaScript, DOM et API Web HTML5

Bonsoir à tous! Smiley biggrin

Voilà je vous expose mon problème.
J'ai une page HTML distante qui contient au milieu de son code source un tableau. Voici une version abrégée de ce tableau (trop grand pour le forum) :

<table width="98%" class="ms-tables-s1" cellspacing="2" cellpadding="2">
				 <tr>
					<th>Pos.</th>
					<th>Team</th>
					<th>P</th>
					<th>W</th>
					<th>D</th>
					<th>L</th>
					<th>F</th>
					<th>A</th>
					<th>B</th>
					  <th>Pts</th>
				</tr>	
				 <tr class="ms-even">
					<td>1.</td>
					<td width="30%">
							<B>Chiefs</B>
					</td>
					<td>9</td>
					<td>6</td>
					<td>0 <td>3</td>
					<td>257</td>
					<td>174</td>
					<td>7</td>
					  <td>31</td>
				</tr>	
				 <tr class="ms-odd">
					<td>2.</td>
					<td width="30%">
							<B>Sharks</B>
					</td>
					<td>10</td>
					<td>7</td>
					<td>0 <td>3</td>
					<td>221</td>
					<td>181</td>
					<td>2</td>
					  <td>31</td>
				</tr>
			</table>


J'aimerais bien récupérer ce tableau pour l'insérer dans ma page (en gros copier coller le code source de mon tableau en gardant les balises, l'information sur les classes CSS, etc). J'ai pu trouver des méthodes qui s'en approchent mais je n'y suis toujours pas arrivé Smiley ohwell

Première méthode que j'ai trouvé (assez novice en la matière je ne fais de copier des méthodes)

<?php
function DOMinnerHTML($element)
{
    $innerHTML = "";
    $children = $element->childNodes;
    foreach ($children as $child)
    {
        $tmp_dom = new DOMDocument();
        $tmp_dom->appendChild($tmp_dom->importNode($child, true));
        $innerHTML.=trim($tmp_dom->saveHTML());
    }
    return $innerHTML;
}
?> 
<?php
$dom= new DOMDocument();
$dom->loadHTMLFile("addressedemonfichier");
$dom->preserveWhiteSpace = false;

$domTable = $dom->getElementsByTagName("table");

foreach ($domTable as $tables)
{
	if($tables->getAttribute('class') == 'ms-tables-s1')
    echo DOMinnerHTML($tables);
}
?>


C'est presque ça mais cette méthode ne fait qu'afficher le contenu du tableau en supprimant toutes les balises Smiley fache (toutefois elle garde les balises <B></B> contrairement à la seconde méthode).

J'ai trouvé une autre méthode avec un code plus simple (je préfèrerais utiliser cette méthode plutôt que la première) mais qui ramène le même résultat (ne garde que le contenu du tableau sans les balises) :

<?php try {
     $dom = new DomDocument();
     $dom->loadHtmlFile('adressedemonfichier');
     $racine = $dom->documentElement;     
	 $divs = $racine->getElementsByTagName('table');
	 if (!is_null($divs)) {
  foreach ($divs as $div) {
	 if($div->getAttribute('class') == 'ms-tables-s1')    
	  echo (htmlspecialchars(utf8_decode($div->nodeValue)));
    }
  }
} catch(DOMException $e) {}  ?> 



Savez-vous comment je pourrais faire ?
Merci à tous pour votre attention ! Smiley cligne
Modifié par MHN (20 Apr 2009 - 21:02)