Use simplexml para procesar datos atom. Muchos blogs usan atom para generar datos, pero atom usa espacio de nombres, por lo que ahora debe especificar el identificador uniforme de recursos (URI) del espacio de nombres al solicitar elementos con nombre y nombres locales. Otro punto es que el método xpath de simplexml no puede. Consulta directamente este árbol xml.
A partir de la versión 5.1 de PHP, SimpleXML puede utilizar consultas XPath directamente en documentos de espacios de nombres. Como es habitual, las rutas de ubicación XPath deben utilizar un prefijo de espacio de nombres, incluso si el documento que se busca utiliza el espacio de nombres predeterminado. La función RegisterXPathNamespace() asocia el prefijo con la URL del espacio de nombres utilizado en consultas posteriores.
El siguiente es un ejemplo del uso de xpath para consultar el elemento de título de un documento atom:
TEXTO SIMPLE
CÓDIGO:
$atom = simplexml_load_file('http://www.ooso.net/index.php/feed/atom');
$atom->registerXPathNamespace('atom','http://www.w3.org/2005/Atom');
$títulos = $atom->xpath('//atom:title');
foreach($títulos como $título)
echo"<h2>". $título."</h2>";
Utilice simplexml para procesar datos rss
Wordpress puede generar fuentes de datos rss2 y también hay algunos espacios de nombres diferentes, como dc. Un ejemplo del uso de simplexml para analizar rss2:
TEXTO SENCILLO
PHP:
$ns=matriz(
'contenido'=>'http://purl.org/rss/1.0/modules/content/',
'wfw'=>'http://wellformedweb.org/CommentAPI/',
'dc'=>'http://purl.org/dc/elements/1.1/'
);
$artículos=matriz();
// paso 1: obtener feed
$blogUrl='http://www.ooso.net/index.php/feed/rss2';
$xml= simplexml_load_url($blogUrl);
// paso 2: obtener metadatos del canal
$canal=matriz();
$canal['título'] =$xml->canal->título;
$canal['enlace'] =$xml->canal->enlace;
$canal['descripción']=$xml->canal->descripción;
$canal['pubDate'] =$xml->pubDate;
$canal['marca de tiempo'] =strtotime($xml->pubDate);
$canal['generador'] =$xml->generador;
$canal['idioma'] =$xml->idioma;
// paso 3: Obtener artículos
foreach($xml->canal->itemas$item){
$artículo=matriz();
$artículo['canal']=$blog;
$artículo['título']=$artículo->título;
$artículo['enlace']=$artículo->enlace;
$artículo['comentarios']=$artículo->comentarios;
$artículo['pubDate']=$item->pubDate;
$artículo['marca de tiempo']=strtotime($item->pubDate);
$artículo['descripción']=(cadena)trim($artículo->descripción);
$artículo['isPermaLink']=$item->guid['isPermaLink'];
// obtener datos contenidos en espacios de nombres
$content=$item->children($ns['content']);
$dc =$item->children($ns['dc']);
$wfw =$item->children($ns['wfw']);
$artículo['creador']=(cadena)$dc->creador;
foreach($dc->subjectas$subject)
$artículo['asunto'][]=(cadena)$asunto;
$artículo['contenido']=(cadena)trim($contenido->codificado);
$artículo['commentRss']=$wfw->commentRss;
// agrega este artículo a la lista
$artículos[$artículo['marca de tiempo']]=$artículo;
}
En este ejemplo, utilice el método de los niños para obtener datos en el espacio de nombres:
TEXTO SIMPLE
PHP:
$dc =$item->children($ns['dc']);