Obtenga información sobre la extensión SimpleXML incluida con PHP versión 5, que permite que las páginas PHP consulten, busquen, modifiquen y vuelvan a publicar XML en una sintaxis compatible con PHP.
La versión 5 de PHP presenta SimpleXML, una nueva interfaz de programación de aplicaciones (API) para leer y escribir XML. En SimpleXML, la siguiente expresión:
$doc->rss->channel->item->title
Seleccionar elementos del documento. Esta expresión es fácil de escribir siempre que esté familiarizado con la estructura del documento. Sin embargo, si no está claro dónde aparecen los elementos requeridos (como en Docbooks, HTML y documentos narrativos similares), SimpleXML puede usar expresiones XPath para encontrar estos elementos.
Primeros pasos con SimpleXML
Supongamos que necesita una página PHP para convertir una fuente RSS en HTML. RSS es un formato XML simple para publicar contenido vinculado. El elemento raíz del documento es rss, que contiene un elemento de canal. El elemento del canal contiene metadatos sobre el feed, como título, idioma y URL. También contiene varios informes encapsulados en el elemento del elemento. Cada elemento tiene un elemento de enlace, que contiene una URL y un título o descripción (normalmente ambos), que contiene texto sin formato. No se utilizan espacios de nombres. Ciertamente hay más en RSS que eso, pero eso es suficiente para este artículo. El Listado 1 muestra un ejemplo típico, que contiene dos noticias.
Listado 1. Fuente RSS
<?xml version="1.0" encoding="UTF-8"?>
<rss versión="0.92">
<canal>
<title>Mokka mit Schlag</title>
<enlace>http://www.elharo.com/blog</enlace>
<language>en</language>
<elemento>
<title>Penn Station: desaparecida pero no olvidada</title>
<descripción>
La antigua Penn Station de Nueva York fue derribada antes de que yo naciera.
Al mirar estas imágenes, parece un error. El sitio actual es.
funcional, pero nada más; en realidad solo algunas torres de oficinas y subterráneos;
Pasillos sin especial interés ni belleza. El nuevo Madison Square...
</descripción>
<enlace>http://www.elharo.com/blog/new-york/2006/07/31/penn-station</enlace>
</elemento>
<elemento>
<title>Personal para Elliotte Harold</title>
<descripción>Algunas personas utilizan filtros de spam muy desagradables que requieren que usted
para escribir alguna cadena aleatoria en su asunto, como E37T, para pasar.
No hace falta decir que ni yo ni la mayoría de las personas nos molestamos en comunicarnos con
Estos paranoicos están reaccionando de forma tremendamente exagerada ante el problema del spam.
Personalmente no lo haré...</description>
<link>http://www.elharo.com/blog/tech/2006/07/28/personal-for-elliotte-harold/</link>
</elemento>
</canal>
</rss>
Desarrollemos una página PHP para formatear una fuente RSS en HTML. El Listado 2 muestra la estructura básica de esta página.
Listado 2. Estructura estática del código PHP
<?php // ¿Cargar y analizar el documento XML?>
<html xml:lang="es" lang="es">
<cabeza>
<title><?php // El título se leerá del RSS ?></title>
</cabeza>
<body>
<h1><?php // El título se volverá a leer del RSS ?></h1>
<?php
// Aquí pondremos un bucle para incluir el título y la descripción de cada elemento.
?>
</cuerpo>
</html>
Analizar un documento XML
El primer paso es analizar el documento XML y guardarlo en una variable. Todo lo que se necesita es una línea de código, pasando una URL a la función simplexml_load_file():
$rss = simplexml_load_file('http://partners.userland.com/nytRss/nytHomepage.xml');
Para este ejemplo, he completado la página desde el feed del New York Times de Userland (en http://partners.userland.com/nytRss/nytHomepage.xml ). Por supuesto, también se puede utilizar cualquier URL a otro canal RSS.
Tenga en cuenta que, aunque el nombre es simplexml_load_file(), esta función en realidad analiza un documento XML en una URL HTTP remota. Pero eso no es lo único extraño de esta función. El valor de retorno (aquí almacenado en la variable $rss) no apunta al documento completo, como podría esperarse si ha utilizado otras API como el Modelo de objetos de documento (DOM). En cambio, apunta al elemento raíz del documento. No se puede acceder al contenido del prólogo y epílogo del documento desde SimpleXML.
Encuentre el título del feed
El título de todo el feed (no los títulos de las historias individuales en el feed) se encuentra en el título secundario del canal del elemento raíz rss. Es fácil encontrar el título como si el documento XML fuera una forma serializada de un objeto de clase rss, con su campo de canal teniendo un campo de título. Usando la sintaxis regular de referencia de objetos PHP, la declaración para encontrar el título es la siguiente:
$título = $rss->canal->título;
Una vez encontrado, se puede agregar al HTML de salida. Hacer esto es fácil, simplemente haga eco de la variable $title:
<title><?php echo $title ?></title>;
Esta línea genera el valor de cadena del elemento en lugar del elemento completo. Es decir, se escribe el contenido del texto pero no se incluyen las etiquetas.
Incluso puedes omitir la variable intermedia $title por completo:
<title><?php echo $rss->channel->title ?></title>;
Debido a que la página reutiliza este valor en varios lugares, me resulta más conveniente almacenarlo en una variable con un significado claro.
…