Foros del Web » Programando para Internet » PHP »

Problema al generar XML

Estas en el tema de Problema al generar XML en el foro de PHP en Foros del Web. Hola a todos!, tengo este codigo php que me genera un XML con los datos que le paos en un array: Código PHP: function  GenerarXML ...
  #1 (permalink)  
Antiguo 18/03/2013, 07:01
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 12 años, 5 meses
Puntos: 2
Problema al generar XML

Hola a todos!, tengo este codigo php que me genera un XML con los datos que le paos en un array:

Código PHP:
function GenerarXML($array_var)
{
    
$xml = new DomDocument('1.0''UTF-8');    
    
    
$array=array();
    
$array=$array_var;

    
    while (
$variables current($array)) 
    {
            
$clavekey($array);
            
$valor=$array[$clave];
            
//echo $clave.':   '.$valor.'<br />';
            
            //por cada clave creamos un padre
            
$padre $xml->createElement($clave);
            
$padre $xml->appendChild($padre);
            
            
//por cada padre creamos un hijo con el valor que pertenece a la clave
            
$hijo=$xml->createElement('value',$valor);
            
$hijo =$padre->appendChild($hijo);
            
            
next($array);
    }

    
$xml->formatOutput true;
    
    
$strings_xml $xml->saveXML();

    
$xml->save('miarchivoxml.xml'); 

y luego tengo este codigo javascript para recuperar el nodo que quiero:
Código:
<script>
//-----------------------------------LEE DATOS DE UN XML----------------------------
function leerDatos(etiqueta)
{

  if (oXML.readyState == 4) 
  {
	  var xml = oXML.responseXML;
	  var item = xml.getElementsByTagName(etiqueta)[0];
	  var txt = item.getElementsByTagName('value')[0].firstChild.data;
	  alert(txt);
  }
}

//-----------------------------------CREA EL OBJETO XMLHttpRequest-----------------
function AJAXCrearObjeto()
{
	var obj;
	if(window.XMLHttpRequest) 
	{ // no es IE
		obj = new XMLHttpRequest();
	} 
	else 
	{ // Es IE o no tiene el objeto
		try 
		{
			obj = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (e) 
		{
			alert('El navegador utilizado no está soportado');
		}
	}
	return obj;
}
 
//-------------------------CREAMOS OBJETO, ABRIMOS EL XML Y LEEMOS-----------------
oXML = AJAXCrearObjeto();
oXML.open('get', 'miarchivoxml.xml');
oXML.onreadystatechange = function() 
{
	leerDatos('estadoProyecto');
}
oXML.send('');
</script>
y el XML que me genera:

Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<estadoProyecto>
  <value>4</value>
</estadoProyecto> 
funciona bien pero si añado más ya no funciona:
Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<estadoProyecto>
  <value>4</value>
</estadoProyecto>

<fff>
  <value>4</value>
</fff> 
entonces he estado probando cambiando:

Código:
 
//esto:
var xml = oXML.responseXML;

//por esto:
 var xml = oXML.responseXML.documentElement;
pero el principal problema viene porque mi xml no tiene las etiquetas <xml></xml>:
Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<estadoProyecto>
  <value>4</value>
</estadoProyecto>

<fff>
  <value>4</value>
</fff>

</xml> 
Así si funciona pero no se como generarlo con esas etiquetas, he estado buscando pero en cuanto en la búsqueda den google pongo <xml>, etiquetas o cosas así directamente me sale cómo crear xml pero no cómo añadir esa etiqueta en concreto, ¿alguien sabe porqué y qué tengo que hacer?, he intentado crearlas como un element mas pero me añade :<xml/>

uso Chrome por cierto

Última edición por eamanesims; 18/03/2013 a las 07:10
  #2 (permalink)  
Antiguo 18/03/2013, 07:32
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Problema al generar XML

debes de evaluar oXML.status == 200 además del oXML.readyState == 4, de otro modo no obtienes la respuesta, consulte un manual de AJAX
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 18/03/2013, 09:05
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 12 años, 5 meses
Puntos: 2
Respuesta: Problema al generar XML

Cita:
Iniciado por maycolalvarez Ver Mensaje
debes de evaluar oXML.status == 200 además del oXML.readyState == 4, de otro modo no obtienes la respuesta, consulte un manual de AJAX
Me sigue pasando exactamente lo mismo, solo me funciona cuando añado<xml></xml>.

Tienes razón y he de poner tb la evaluación de status = 200 pero entonces no entiendo porque lo ponga o no me funciona exactamente igual, si supuestamente no puedo obtener la respuesta si no evalúo status==200 ¿por qué si que obtengo la respuesta igual que si no lo evalúo? y no entiendo porqué me funciona solo cuando añado <xml></xml>, en la información que he leído a la gente le funciona sin poner eso.

EDITO: ¿podría ser que por alguna razón no detecta que es un xml y por eso me funciona cuando le añado las etiquetas?

Última edición por eamanesims; 18/03/2013 a las 09:46

Etiquetas: variables, 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 15:45.