de xml a php
Necesito un código con el cual pueda mostrar los datos de un xml en una página con php.
Busca alguna clase que parsee xml.
Pero en realidad depende de que tipo de xml, uses y que tags tenga.
Pero en realidad depende de que tipo de xml, uses y que tags tenga.
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
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
