Foros del Web » Programando para Internet » PHP »

Mostrar solo un registro desde un archivo xml con php

Estas en el tema de Mostrar solo un registro desde un archivo xml con php en el foro de PHP en Foros del Web. Hola a todos tengo datos en un archivo xml el cual del cual quiero mostrar solo un registro con php dependiendo del id, algo así ...
  #1 (permalink)  
Antiguo 15/08/2008, 00:04
 
Fecha de Ingreso: septiembre-2007
Mensajes: 9
Antigüedad: 16 años, 7 meses
Puntos: 0
Mostrar solo un registro desde un archivo xml con php

Hola a todos tengo datos en un archivo xml el cual del cual quiero mostrar solo un registro con php dependiendo del id, algo así como se haría desde una base de datos mysql, gracias a quienes puedan ayudarme,

este es el XML

<?xml version='1.0' encoding='UTF-8'?>
<library>
<book id="1">
<title>Fahrenheit 451</title>
<author>R. Bradbury</author>
<publisher>Del Rey</publisher>
</book>
<book id="2">
<title>The Silmarillion</title>
<author>J.R.R. Tolkien</author>
<publisher>G. Allen Unwin</publisher>
</book>
<book id="3">
<title>1984</title>
<author>G. Orwell</author>
<publisher>Signet</publisher>
</book>
<book id="4">
<title>Frankenstein</title>
<author>M. Shelley</author>
<publisher>Bedford</publisher>
</book>
<book id="5">
<title>The Moon Is a Harsh Mistress</title>
<author>R. A. Heinlein</author>
<publisher>Orb</publisher>
</book>
</library>


para mostrar todos los registros desde el archivo XML seria asi.
<?php
$library = simplexml_load_file( 'data.xml' );
echo '<table>';
echo '<tr>';
echo '<th>Title</th><th>Author</th><th>Publisher</th>';
echo '</tr>';
foreach( $library->book as $book ) {
echo '<tr>';
echo '<td>' . $book->title . '</td>';
echo '<td>' . $book->author . '</td>';
echo '<td>' . $book->publisher . '</td>';
echo '</tr>';
}
echo '</table>';

?>

ahora bien como haría para mostrar solo un registro.


desde una base datos mysql seria asi.

<?php
include 'config_db.php'
$id = 1;
$result = mysql_query("SELECT * FROM data WHERE id = $id");
$row = mysql_fetch_assoc($result);
echo $row["title"];
echo $row["author"];
echo $row["publisher"];
?>

  #2 (permalink)  
Antiguo 15/08/2008, 04:20
 
Fecha de Ingreso: julio-2008
Mensajes: 22
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Mostrar solo un registro desde un archivo xml con php

Nunca he utilizado "simplexml" pero utilizando DOM podrias validar el XML contra un DTD o un XSD para posteriormente hacer uso de "DOMDocument::getElementById"

Otra posibilidad imagino que fuera utilizar "DOMXPath::query" con una expresion como "/library//book[@id = '3']" pero nunca he utilizado "XPath" en PHP asi que tampoco tengo mucha idea.

Siento no poder ser de mas ayuda.

Salu2.

--- EDITADO ---

Por lo que veo "simplexml" soporta XPath asi que deberia de funcionar con algo como (repito que no conozco "simplexml" y lo siguiente no lo he probado):
Código PHP:
<?php 
 $library 
simplexml_load_file("data.xml");
 
$book $library->xpath("/library//book[@id = '3']");
 echo 
'<table>'
 echo 
'<tr>'
 echo 
'<th>Title</th><th>Author</th><th>Publisher</th>'
 echo 
'</tr>'
 echo 
'<tr>'
 echo 
'<td>' $book[0]->title '</td>'
 echo 
'<td>' $book[0]->author '</td>'
 echo 
'<td>' $book[0]->publisher '</td>'
 echo 
'</tr>'
 echo 
'</table>'
 
 
?>

Última edición por aoglab; 15/08/2008 a las 04:30
  #3 (permalink)  
Antiguo 15/08/2008, 21:34
 
Fecha de Ingreso: septiembre-2007
Mensajes: 9
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Mostrar solo un registro desde un archivo xml con php

Gracias por responder aoglab creo que es un poco complicado investige DOM y Otras cosas pero no logre solucionar, asi que decidi seguir utilizando base de datos mysql.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:10.