Foros del Web » Programando para Internet » PHP »

warning al leer xml

Estas en el tema de warning al leer xml en el foro de PHP en Foros del Web. Hola a todos, estoy leyendo un xml de esta forma: Código PHP: $reader  = new  XMLReader ();         $reader -> xml ( $myXml ,  NULL ,  ...
  #1 (permalink)  
Antiguo 05/03/2012, 02:31
 
Fecha de Ingreso: marzo-2010
Mensajes: 13
Antigüedad: 14 años
Puntos: 0
warning al leer xml

Hola a todos, estoy leyendo un xml de esta forma:

Código PHP:
$reader = new XMLReader();
       
$reader->xml($myXmlNULLLIBXML_NOWARNING LIBXML_NOERROR); 
y en alguna ocasión, practicamente casi nunca en la página web se muestra este warning:

warning: XMLReader::XML() [xmlreader.xml] Empty string supplied as input.

Perdonad pero soy bastante nuevo con php, segun el warning puedo entender que se este suministrando como entrada una cadena vacía, lo que no entiendo es que si tengo como opción LIBXML_NOWARNIG es que se muestre este warning además de que haciendo lo mismo casi casi nunca se muestra el warning.

¿Alguna sugerencia?

Muchas gracias.

Última edición por jjreina; 05/03/2012 a las 03:23
  #2 (permalink)  
Antiguo 05/03/2012, 03:25
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 4 meses
Puntos: 25
Respuesta: warning al leer xml

porque no se muestra todo el codigo?!
__________________
cada vez que aprendes algo te crees que no sabes nada
  #3 (permalink)  
Antiguo 05/03/2012, 04:30
 
Fecha de Ingreso: marzo-2010
Mensajes: 13
Antigüedad: 14 años
Puntos: 0
Respuesta: warning al leer xml

Gracias por contentar, aquí dejo el código de la función es un poco largo lo siento por eso no lo había puesto

Código PHP:
function getXMLData($xmlText$isMultivalue true) {

    
// Variables auxiliares para la lectura del xml
    
$entries 0;               // Numero de objetos devueltos por la busqueda + 1 fila de la cabecera
    
$data = array();            // Array de datos utiles del xml devuelto por la busqueda + 1 fila de la cabecera
    
$data[$entries] = array();  // Primer subarray con los nombres de los campos de tarsys de la plantilla (cabecera)


    // Se recoge el xml que nos interesa sin la envoltura SOAP
    
$reader = new XMLReader();
    
$reader->xml($xmlTextNULLLIBXML_NOWARNING LIBXML_NOERROR);
    while(
$reader->read()) 
    {
        if(
$reader->nodeType == XMLReader::ELEMENT && $reader->localName == "result"
        {
             
$reader->read();
             
$xmlSinSoap trim($reader->value);
        }
    }
    
$reader->close();

    
$xmlresult $xmlSinSoap;

    
// Obtenemos el array con los campos del template para $data[0]
    
$p xml_parser_create();
    
xml_parse_into_struct($p$xmlresult$vals$index);
    
xml_parser_free($p);

    for(
$i 0$i count($index['NS1:FIELD']); $i++) 
    {
      
$fieldindex $index['NS1:FIELD'][$i];
      if ((
$vals[$fieldindex]['type']=="open") || ($vals[$fieldindex]['type']=="complete")) 
      {
        
$data[0][$vals[$fieldindex]["attributes"]['POSITION']]=$vals[$fieldindex]["attributes"]['NAMETARSYS'];
      }
    }
    
$totalCampos=count($data[0]);
    
$reader2 = new XMLReader();
    
// AQUI ES DONDE SE PRODUCE EL WARNING
    
$reader2->xml($xmlresultNULLLIBXML_NOWARNING LIBXML_NOERROR);
    if(
$isMultivalue && isset($data[0][4]) && $data[0][4]=="Votantes-IdVoto")
    {
      
$domNodos = array();
      
$domNodosIndex 0;
      
$N 0;   // Número de ids del multivalor con más valores de id distintos

      
while ($reader2->read() && !($reader2->nodeType == XMLReader::END_ELEMENT && $reader2->localName == "entry")) 
      {
        if(
$reader2->nodeType == XMLReader::ELEMENT
        {
            if(
$reader2->localName == "column"
            {
                
$pos $reader2->getAttribute("position");
                
$domNodos[++$domNodosIndex] = $reader2->expand()->childNodes->length;
            }
        }
      }

      if(
count($domNodos) > 0
      {
        
$N max($domNodos);
        for(
$i 1$i <= $N$i++) 
        {
          
$data[$i] = array();
          for(
$j 1$j< = count($data[0]); $j++) 
          {
            
$data[$i][$j]=""//Inicializamos la tabla completa de multivalue
          
}
        }

        
$indexInDataForId=array(); //Asociamos el indice de $data con cada id
        
$nextIndex=1//Siguiente indice a crear en indexInDataForId para id nuevo
        
$pos=0//Current position for each data of the multivalue
        
$currentId=0//Current ID for each data of the multivalue
        
$currentValue=0//Current value for that ID
        
$voto=array(); //Tabla para guardar los datos de los votos
        
$indexInVotoForId=array();
        
$nextIndexInVoto=1;

        
$reader2->close();
        
$reader2 = new XMLReader();
        
$reader2->xml($xmlresultNULLLIBXML_NOWARNING LIBXML_NOERROR);
        while (
$reader2->read() && !($reader2->nodeType == XMLReader::END_ELEMENT && $reader2->localName == "entry")) {
          if (
$reader2->nodeType == XMLReader::ELEMENT) {
            
// Se recoge la position de los valores a partir de ahora
            
if ($reader2->localName=="column") {
              
$pos=$reader2->getAttribute("position");

            
// Se guarda el valor correspondiente (identificando el indice en $data)
            
} else if($reader2->localName=="id") {

              
$reader2->read();
              
$currentId=trim($reader2->value);

            }
        }

        
$totalVotantes count($data)-1;   
        
$reader2->close();

He puesto un comentario en mayúsculas donde se produce el warning.

Sobre todo el problema que tengo es que como aun no he conseguido reproducir el warning de forma sistemática no se por donde puede venir, ya que como comento solo da el warning en poquísimas situaciones y de momento no he sacado ningún patrón.

Muchas gracias.

Última edición por jjreina; 05/03/2012 a las 04:47
  #4 (permalink)  
Antiguo 05/03/2012, 05:30
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 4 meses
Puntos: 25
Respuesta: warning al leer xml

cuando pones el url de xml en la barra de direccion da resultado?
__________________
cada vez que aprendes algo te crees que no sabes nada
  #5 (permalink)  
Antiguo 06/03/2012, 02:04
 
Fecha de Ingreso: marzo-2010
Mensajes: 13
Antigüedad: 14 años
Puntos: 0
Respuesta: warning al leer xml

Gracias por la ayuda, pero creo que el error está en la respuesta de una comunicación soap que por algún motivo que aun no he localizado el response devuelve null.

Gracias.

Etiquetas: warning, xml
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 00:39.