J'ai pas bien compris le rôle de la fonction DOMDocument::getElementsByTagNameNS
Exemple inspiré d'un commentaire de la doc, que tu peux exécuter pour voir :DOMDocument::getElementsByTagName ( string $name )
<?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
Non je l'ai bien compris cette fonction mais mon question etait sur la fonction DOMDocument::getElementsByTagNameNSCela te renvoie tous les noeuds qui ont un nom de balise identique à celui passé en paramètreDOMDocument::getElementsByTagName ( string $name )
<?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