Foros del Web » Programando para Internet » PHP »

problema con php xml

Estas en el tema de problema con php xml en el foro de PHP en Foros del Web. hola tengo q recibir un archivo xml en php, lo recibo atravez de una matriz pero no se como determinar el numero de elementos de ...
  #1 (permalink)  
Antiguo 25/01/2008, 17:29
 
Fecha de Ingreso: enero-2008
Mensajes: 8
Antigüedad: 16 años, 3 meses
Puntos: 0
problema con php xml

hola tengo q recibir un archivo xml en php, lo recibo atravez de una matriz pero no se como determinar el numero de elementos de esta matriz para poder mostrar el numero total de elementos q contenga y luego colocarlos en una tabla html . ayuda porfa.

<HTML>
<HEAD>
<TITLE>New Document</TITLE>
</HEAD>
<BODY>
<p align="center"><h2><font color="#FF8040">Gold Price quoted in variuos national currencies.</font></h2></p>

<table border="1" width="100%">
<tr>
<th><font color="#000000">Currency</font></th>
<th><font color="#000000">Code</font></th>
<th><font color="#000000">Ask price/gram</font></th>
<th><font color="#000000">Bid price/gram</font></th>
<th><font color="#000000">Ask price/ozt</font></th>
<th><font color="#000000">Bid price/ozt</font></th>
</tr>


<?
class xml {

esta es la matriz donde se recibe el archivo xml
var $matriz = array();
var $resultado;
var $informacion;

function xml($contenido)
{
$this->resultado = xml_parser_create ();
xml_set_object($this->resultado,$this);
xml_set_element_handler($this->resultado, "abrir", "cerrar");

xml_set_character_data_handler($this->resultado, "info");

$this->informacion = xml_parse($this->resultado,$contenido);

xml_parser_free($this->resultado);

return $this->matriz;
}
function abrir($parser, $nombre, $atributos) {
$etiqueta = array("nombre"=>$nombre,"atributos"=>$atributos);
array_push($this->matriz,$etiqueta);
}

function info($parser, $etiqueta_info) {
if(trim($etiqueta_info)) {
if(isset($this->matriz[count($this->matriz)-1]['info'])) {
$this->matriz[count($this->matriz)-1]['info'] .= $etiqueta_info;
}
else {
$this->matriz[count($this->matriz)-1]['info'] = $etiqueta_info;
}
}
}

function cerrar($parser, $nombre) {
$this->matriz[count($this->matriz)-2]['hijo'][] = $this->matriz[count($this->matriz)-1];
array_pop($this->matriz);
}
}

//parte uno
$url = "http://dgcsc.org/goldprices2.xml";
// lee todo el contenido del archivo en una cadena
$xml_contenido = file_get_contents($url,'r');
$xml = new xml($xml_contenido);
echo '<pre>';
//Imprime información legible sobre una variable
//print_r($xml->matriz);
echo '</pre>';
//parte dos
$xml = new xml($xml_contenido);
// $etiqueta = $xml->matriz[0][hijo][0][hijo][1][nombre];
//$atributos = $xml->matriz[0][hijo][0][hijo][1][atributos];
//$informacion = $xml->matriz[0][hijo][0][hijo][1][info];
/*$moneda = $xml->matriz[0][hijo][0][atributos][CURRENCYNAME];
$codigo = $xml->matriz[0][hijo][0][atributos][CURRENCYCODE];
$ask = $xml->matriz[0][hijo][0][hijo][0][info];
$bid = $xml->matriz[0][hijo][0][hijo][1][info];
//echo 'Etiqueta: '.$etiqueta;
//echo '<br/>Atributos: '.$atributos;
//echo '<br/>Información: '.$informacion;
echo '</br>Currency:'.$moneda;
echo '</BR>Codigo:' .$codigo;
echo '</br>Ask price :'.$ask;
echo '</br> Bid price :'.$bid;
//moneda barsil
$moneda = $xml->matriz[0][hijo][1][atributos][CURRENCYNAME];
$codigo = $xml->matriz[0][hijo][1][atributos][CURRENCYCODE];
$ask = $xml->matriz[0][hijo][1][hijo][0][info];
$bid = $xml->matriz[0][hijo][1][hijo][1][info];
echo '</br>Currency:'.$moneda;
echo '</BR>Codigo:' .$codigo;
echo '</br>Ask price :'.$ask;
echo '</br> Bid price :'.$bid;*/
function redondeado ($numero, $decimales)
{
$factor = pow(10, $decimales);
return (round($numero*$factor)/$factor);
}
?>
<?
$j=1;
aqui debo determinar el numero de elemntos de la matriz
for ($i=0;$i<24;$i++)
{
$moneda = $xml->matriz[0][hijo][$i][atributos][CURRENCYNAME];
$codigo = $xml->matriz[0][hijo][$i][atributos][CURRENCYCODE];
$ask = $xml->matriz[0][hijo][$i][hijo][0][info];
$bid = $xml->matriz[0][hijo][$i][hijo][1][info];
$askO= $ask * 31.1034768;
$askOzt=redondeado ($askO,4);
$bidO= $bid * 31.1034768;
$bidOzt=redondeado($bidO,4);
/*echo"<td>$moneda</td>";
echo"<td>$codigo</td>" ;
echo"<td>$ask</td>" ;
echo"<td>$bid</td>" ;
echo"<td>$askOzt</td>" ;
echo"<td>$bidOzt</td>" ;
//echo '' .$moneda."". "";
if ($j == 1)
{
echo " </tr><tr> ";
$j=1;
}
else
{
$j++;

}
echo"</tr>";
$fecha = $xml->matriz[0][atributos][DATE];
echo"</br>Last update : " .$fecha ."( updated every 2 minutes )<br>\n";
?>
</BODY>
</HTML>
  #2 (permalink)  
Antiguo 25/01/2008, 21:59
Avatar de jcarrascal  
Fecha de Ingreso: enero-2008
Mensajes: 87
Antigüedad: 16 años, 2 meses
Puntos: 6
Re: problema con php xml

Cambia estas líneas:

Código PHP:
aqui debo determinar el numero de elemntos de la matriz
for ($i=0;$i<24;$i++) 
Por estas:

Código PHP:
aqui debo determinar el numero de elemntos de la matriz
for ($i=0;$i<count($xml->matriz[0][hijo][$i]);$i++) 
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 12:54.