Foros de debate
PHP
Lista de foros
| Lista de mensajes de este foro
Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Enviado por Aylín el día 21 de septiembre de 2005
Necesito un código con el cual pueda mostrar los datos de un xml en una página con php.
Enviado por at-elah el día 22 de septiembre de 2005
Busca alguna clase que parsee xml.
Pero en realidad depende de que tipo de xml, uses y que tags tenga.
Enviado por my2kbsd el día 23 de septiembre de 2005
Aqui publico un ejemplo, de todos modos lo envio a tu cuenta, ok.
este es archivo notas.xml
-----------------
<?xml version="1.0" encoding="iso-8859-1"?>
<notas asignaturas="SSOO">
<alumno>
<matricula>num 1</matricula>
<nombre>Nombre 1</nombre>
<apellidos>Apellidos 1</apellidos>
<teoria>8</teoria>
<practicas>9</practicas>
</alumno>
<alumno>
<matricula>num 2</matricula>
<nombre>Nombre 2</nombre>
<apellidos>Apellidos 2</apellidos>
<teoria>5</teoria>
<practicas>4.5</practicas>
</alumno>
<alumno>
<matricula>num 3</matricula>
<nombre>Nombre 3</nombre>
<apellidos>Apellidos 3</apellidos>
<teoria>9</teoria>
<practicas>7</practicas>
</alumno>
</notas>
-----------------
aqui termina archivo xml
aqui archivo php, para interpretar el xml anterior
-----------------
<?php
// variables
$notas=array();
$alumno=array();
$elemento=$materia="";
$procesar_datos=false;
$notas_alumno=$notas_teoria=$notas_practicas=0;
$notas_finales=$num_aprobados=0;
// documento XML a analizar
$documento = "notas.xml";
// 1er paso
$parser = xml_parser_create();
// 2º paso
function inicio_elemento($parser,$etiqueta,$atributos){
global $elemento,$procesar_datos,$materia;
if(($etiqueta=="notas")||($etiqueta=="alumno")){
$procesar_datos=false;
$materia=($etiqueta=="notas")?$atributos:$materia;
}else{
$procesar_datos=true;
$elemento=$etiqueta;
}
}
// 3º paso
function fin_elemento($parser,$etiqueta){
global $notas,$alumno,$procesar_datos;
// fin de alumno
if($etiqueta=="alumno"){
$notas[]=$alumno;
$alumno=array();
}
//no procesar etiqueta de cierre
$procesar_datos=false;
}
// 4º paso
xml_set_element_handler($parser, "inicio_elemento","fin_elemento");
// 5º paso
function datos($parser,$dato){
global $alumno,$elemento,$procesar_datos;
if($procesar_datos){
$alumno["$elemento"]=$dato;
}
}
// 6º paso
xml_set_character_data_handler($parser,"datos");
// 7º paso
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
// 10º paso
function analizar_documento($parser,$documento){
if(!file_exists($documento)){
die("No se puede encontrar el archivo\"$documento\".");
}
if(!($fp = @fopen($documento, "r"))){
die("No se puede leer el archivo\"$documento\".");
}
while($data = fread($fp, 4096)){
if(!xml_parse($parser, $data, feof($fp))){
return(false);
}
}
fclose($fp);
return(true);
}
// 11º paso
if (!analizar_documento($parser,$documento)){
echo "<center><hr>Error XML: '",xml_error_string(xml_get_error_code($parser));
echo "' en la línea ",xml_get_current_line_number($parser),"<hr></center>";
}
$num_alumnos=count($notas);
echo "<html><head><title>Trabajando con XML</title></head>";
echo "<body><center><h2>Interpretando XML con PHP</h2>";
echo "<table style='font:14px Verdana;' border='0' cellpadding='2'>";
echo "<tr bgcolor='#CCCC66' align='center'><td colspan='4'>Alumno</td>";
echo "<td colspan='3'>Notas</td></tr>";
echo "<tr bgcolor='#CCCC66'><td>#</td><td>Num Lista</td>";
echo "<td>Nombre</td><td>Apellidos</td>";
echo "<td>Teoría</td><td>Prácticas</td><td>Final</td></tr>";
for($i=0;$i<$num_alumnos;$i++){
echo "<tr align='center' bgcolor='#666666'><td>",$i+1,"</td>";
$notas_alumno=0;
while (list($clave,$valor) = each ($notas[$i])) {
echo "<td>$valor</td>";
if($clave=="teoria"){
$notas_alumno+=$valor;
$notas_teoria+=$valor;
}
if($clave=="practicas"){
$notas_alumno+=$valor;
$notas_practicas+=$valor;
}
}
$notas_finales+=($notas_alumno/2);
echo "<td>",($notas_alumno/2),"</td></tr>";
if(($notas_alumno/2)>5) $num_aprobados++;
}
echo "<tr bgcolor='#CCCC66' align='center'>";
echo "<td colspan='4'>Valores medios ($num_alumnos alumnos)</td>";
echo "<td bgcolor='#CCCC66'>";
printf("%01.2f",$notas_teoria/$num_alumnos);
echo "</td>";
echo "<td bgcolor='#CCCC66'>";
printf("%01.2f",$notas_practicas/$num_alumnos);
echo "</td>";
echo "<td bgcolor='#CCCC66'>";
printf("%01.2f",$notas_finales/$num_alumnos);
echo "</td>";
echo "</tr></table>";
echo "<p><b>Nota: </b>Aprobados el ";
printf("%01.0f",($num_aprobados/$num_alumnos)*100);
echo "%</p></center></body></html>";
?>
-----------------
Ciudad de Mexico, 19:00 PM
Enviado por Aylin el día 23 de septiembre de 2005
Gracias por responderme, este foro si es serio.
Enviado por Aylin el día 23 de septiembre de 2005
Gracias por responderme, este foro si es serio.
Enviado por Superyeah el día 9 de agosto de 2008
Muchisimas gracias por este ejemplo era lo que llevaba buscado desde hacía algun tiempo.
Sinceras gracias y saludos.