2ª
¿Hola, cómo estás? La verdad que me fue de mucha ayuda lo que me enviaste la otra vez. Muchas Gracias! He realizado algunas modificaciones a ese código, y lee el archivo pero no me muestra lo que quiero. Te pido por favor si lo puedes mirar para ver si tu te das cuenta del error. Muchas gracias!
Al código le agregue las funciones "startElement","endElement"
Este es el código modificado:
<?
$depth = array();
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
$url = "http://www.eldominio.com/get_data.php?startdate=2005-06-06";
$link = fopen($url,"r");
while ( $data = fread($link,4096) ) {
$resultadoXML = makeXMLTree($data);
if (!xml_parse($xml_parser, $data, feof($link))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
fclose($link);
xml_parser_free($xml_parser);
//Aqui, las funciones:
$currentTag = "";
$currentAttribs = "";
function startElement($parser, $name, $attribs)
{
global $currentTag, $currentAttribs;
$currentTag = $name;
$currentAttribs = $attribs;
switch ($name) {
default:
echo("<b><$name></b><br>");
break;
}
}
function endElement($parser, $name)
{
global $currentTag;
switch ($name) {
default:
echo("<br><b></$name></b><br><br>");
break;
}
$currentTag = "";
$currentAttribs = "";
}
///////////////crea la planilla
function makeXMLTree($data)
{
$ret = array();
$parser = xml_parser_create();
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
xml_parse_into_struct($parser,$data,$values,$tags);
xml_parser_free($parser);
$hash_stack = array();
foreach ($values as $key => $val)
{
switch ($val['type'])
{
case 'open':
array_push($hash_stack, $val['tag']);
break;
case 'close':
array_pop($hash_stack);
break;
case 'complete':
array_push($hash_stack, $val['tag']);
// uncomment to see what this function is doing
// echo("\$ret[" . Implode($hash_stack, "][") . "] = '{$val[value]}';\n");
eval("\$ret[" . Implode($hash_stack, "][") . "] = '{$val[value]}';");
array_pop($hash_stack);
break;
}
}
return $ret;
}
?>
ME ARROJA LAS ETIQUETAS, NO EL DATO:
<DATA>
<ROW>
<STATSDATE></STATSDATE>
<REALIMPS></REALIMPS>
<REALCLICKS></REALCLICKS>
<REALDOWNLOADS></REALDOWNLOADS>
<FDCOUNT></FDCOUNT>
</ROW>
</DATA>
Al código le agregue las funciones "startElement","endElement"
Este es el código modificado:
<?
$depth = array();
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
$url = "http://www.eldominio.com/get_data.php?startdate=2005-06-06";
$link = fopen($url,"r");
while ( $data = fread($link,4096) ) {
$resultadoXML = makeXMLTree($data);
if (!xml_parse($xml_parser, $data, feof($link))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
fclose($link);
xml_parser_free($xml_parser);
//Aqui, las funciones:
$currentTag = "";
$currentAttribs = "";
function startElement($parser, $name, $attribs)
{
global $currentTag, $currentAttribs;
$currentTag = $name;
$currentAttribs = $attribs;
switch ($name) {
default:
echo("<b><$name></b><br>");
break;
}
}
function endElement($parser, $name)
{
global $currentTag;
switch ($name) {
default:
echo("<br><b></$name></b><br><br>");
break;
}
$currentTag = "";
$currentAttribs = "";
}
///////////////crea la planilla
function makeXMLTree($data)
{
$ret = array();
$parser = xml_parser_create();
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
xml_parse_into_struct($parser,$data,$values,$tags);
xml_parser_free($parser);
$hash_stack = array();
foreach ($values as $key => $val)
{
switch ($val['type'])
{
case 'open':
array_push($hash_stack, $val['tag']);
break;
case 'close':
array_pop($hash_stack);
break;
case 'complete':
array_push($hash_stack, $val['tag']);
// uncomment to see what this function is doing
// echo("\$ret[" . Implode($hash_stack, "][") . "] = '{$val[value]}';\n");
eval("\$ret[" . Implode($hash_stack, "][") . "] = '{$val[value]}';");
array_pop($hash_stack);
break;
}
}
return $ret;
}
?>
ME ARROJA LAS ETIQUETAS, NO EL DATO:
<DATA>
<ROW>
<STATSDATE></STATSDATE>
<REALIMPS></REALIMPS>
<REALCLICKS></REALCLICKS>
<REALDOWNLOADS></REALDOWNLOADS>
<FDCOUNT></FDCOUNT>
</ROW>
</DATA>
1 respuesta
Respuesta de idmoreno
1