Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera.
Espero que todos estejam bem.
Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
<item>
<title>
d sa dsad sad sadasdas
</title>
<link>
dsadas dsa sad asd as dsada
</link>
<pubDate>sadasdasdsa as</pubDate>
<dc:creator>
d sad sad sa ad as das
</dc:creator>
</item>
Meu código:
$link = "noticias.xml";
$xml = simplexml_load_file($link);
foreach($xml -> channel as $ite) {
$titulo = $ite -> item->title;
$urltitulo = $ite -> item->link;
print $urltitulo = $ite -> item->**dc:creator**;
} //fim do foreach
?>
Esse campo **dc:creator **eu não consigo ler. Como faço?
Agradeço quem puder me ajudar.
AbsPara acessar elementos no XML que possuem nomes de tags com dois pontos, como "dc:creator", você precisa lidar com namespaces. No PHP, o SimpleXMLElement tem métodos específicos para manipular namespaces.
O namespace pode ser especificado diretamente se você conhece o URI
$link = "noticias.xml";
$xml = simplexml_load_file($link);
$namespace = $xml->getNamespaces(true); // Pega todos os namespaces do documento
foreach ($xml->channel->item as $item) {
$titulo = (string)$item->title;
$url = (string)$item->link;
$creator = (string)$item->children($namespace['dc'])->creator; // Acessa o namespace 'dc'
echo "Título: $titulo\n";
echo "URL: $url\n";
echo "Criador: $creator\n";
}
Para acessar elementos XML que possuem nomes com dois pontos, você precisa usar uma sintaxe especial para referenciar esses elementos ao usar o SimpleXML do PHP.