Aidez moi à comprendre cette fonction

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Aidez moi à comprendre cette fonction

Re: Aidez moi à comprendre cette fonction

par ouckileou » 23 juil. 2010, 17:11

Ah ok le NS était subtil... :)

Mais c'est pareil, sauf que tu limites à un namespace. Si tu regardes l'exemple de la doc c'est assez clair: http://www.php.net/manual/en/domdocumen ... namens.php

Dans le document XML présenté on voit deux balises "include": <xi:include> et <include>
<?xml version="1.0" ?>
<chapter xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Books of the other guy..</title>
<para>
 <xi:include href="book.xml">
  <xi:fallback>
   <error>xinclude: book.xml not found</error>
  </xi:fallback>
 </xi:include>
 <include>
  This is another namespace
 </include>
</para>
</chapter>
Si on recherche les balises "include", en limitant au namespace xi, on en aura qu'une :
<?php

$xml = <<<EOD
<?xml version="1.0" ?>
<chapter xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Books of the other guy..</title>
<para>
 <xi:include href="book.xml">
  <xi:fallback>
   <error>xinclude: book.xml not found</error>
  </xi:fallback>
 </xi:include>
 <include>
  This is another namespace
 </include>
</para>
</chapter>
EOD;
$dom = new DOMDocument;

// load the XML string defined above
$dom->loadXML($xml);

foreach ($dom->getElementsByTagNameNS('http://www.w3.org/2001/XInclude', '*') as $element) {
    echo 'local name: ', $element->localName, ', prefix: ', $element->prefix, "\n";
}
?>
local name: include, prefix: xi
:arrow: http://fr.wikipedia.org/wiki/Espace_de_noms

Sinon pour récupérer la valeur d'un attribut, voir la classe DomElement: http://www.php.net/manual/en/domelement ... ribute.php

Re: Aidez moi à comprendre cette fonction

par zapata » 23 juil. 2010, 16:58

Cela te renvoie tous les noeuds qui ont un nom de balise identique à celui passé en paramètre
DOMDocument::getElementsByTagName ( string $name )
Non je l'ai bien compris cette fonction mais mon question etait sur la fonction DOMDocument::getElementsByTagNameNS :non: ,et on parlant de ça est ce que tu peut me dire comment recuper un attribut d'une balise par exemple je veux recuperer le lien de lattribut href de la balise <a>?????

Re: Aidez moi à comprendre cette fonction

par ouckileou » 23 juil. 2010, 16:43

Cela te renvoie tous les noeuds qui ont un nom de balise identique à celui passé en paramètre
DOMDocument::getElementsByTagName ( string $name )
Exemple inspiré d'un commentaire de la doc, que tu peux exécuter pour voir :
<?php

$xml  =<<<EOT
<?xml version="1.0" encoding="ISO-8859-1"?>
<news>
    <item>
        <title>News 1</title>
        <created>04/2/2010 08:00 EST</created>
        <url>http://news.example.com/news.pdf</url>
    </item>
    <item>
        <title>News 2</title>
        <created>04/25/2010 08:00 EST</created>
        <url>http://news.example.com/news.pdf</url>
    </item>
    <item>
        <title>News 3</title>
        <created>04/27/2010 08:00 EST</created>
        <url>http://news.example.com/news.pdf</url>
    </item>
</news>
EOT;

$doc = new DOMDocument();

if ($doc->loadXML($xml)) {
    $titles = $doc->getElementsByTagName('title');
	
	echo $titles->length.' titres trouvés<br /><br />';
    foreach($titles as $title) {
        echo $title->nodeValue;
		echo '<br />';
    }
}

?>
Résultat :
3 titres trouvés

News 1
News 2
News 3

Aidez moi à comprendre cette fonction

par zapata » 23 juil. 2010, 16:02

Bonjour,
J'ai pas bien compris le rôle de la fonction DOMDocument::getElementsByTagNameNS :oops: alors qui peut m'expliquer tous sur cette fonction :priere: