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
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
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/domdocument.getelementsbytagnamens.php
Dans le document XML présenté on voit deux balises "include": <xi:include> et <include>
[php]<?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>[/php]
Si on recherche les balises "include", en limitant au namespace xi, on en aura qu'une :
[php]<?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";
}
?>
[/php]
[quote]local name: include, prefix: xi [/quote]
: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.getattribute.php