Retroceder   Foros del Web > Programación para sitios web > XML

Respuesta
 
Herramientas Desplegado
Antiguo 21-nov-2006, 04:02   #1 (permalink)
yesik está en el buen camino
 
Avatar de yesik
 
Fecha de Ingreso: octubre-2004
Ubicación: Orense
Mensajes: 293
Enviar un mensaje por MSN a yesik Enviar un mensaje por Skype™ a yesik
no reconoce propiedad documentElement

Hola tengo un xml así
Código HTML:
		$stringxml = '';
		$stringxml .= '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
		$stringxml .= '<?xml-stylesheet type="text/xsl" href="copy.xsl"?>';
		$stringxml .= '<dxml>';

								for($i=0; $i < count($encontrados_casa); $i++)
									{
        $stringxml .= '  <casa>';
		$stringxml .= '     <provincia>'.$encontrados_casa[$i]['Provincia'].'</provincia>';
		$stringxml .= '     <poblacion>'.$encontrados_casa[$i]['Localidad'].'</poblacion>';
		$stringxml .= '     <coorx>'.$encontrados_casa[$i]['COORX'].'</coorx>';
		$stringxml .= '     <cory>'.$encontrados_casa[$i]['COORY'].'</coory>';
		$stringxml .= '  </casa>';
que recibo perfectamente incluso muestro en un alert y esta correcto, el problema esta al intentar acceder a sus elementos, lo estoy intentando asì
Código HTML:
			var markers = xml.documentElement.getElementsByTagName("casa");
			alert(markers.length);
pero no lo consigo
saben pq? tengo otra alternativa?
__________________
Inmuebles de Galicia:: www.inmueblevirtual.net
Compartir piso Galicia:: www.inmueblevirtual.net/foro
yesik está desconectado   Responder Citando
Antiguo 21-nov-2006, 04:19   #2 (permalink)
Moderadora
tunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradable
 
Avatar de tunait
 
Fecha de Ingreso: noviembre-2002
Ubicación: Terok Nor
Mensajes: 14.964
Buenas

prueba a acceder directamente sin usar documentElement pues seguramente estará incluido dentro del objeto xml

var markers = xml.getElementsByTagName("casa");
alert(markers.length);

un saludo
tunait está desconectado   Responder Citando
Antiguo 21-nov-2006, 04:25   #3 (permalink)
yesik está en el buen camino
 
Avatar de yesik
 
Fecha de Ingreso: octubre-2004
Ubicación: Orense
Mensajes: 293
Enviar un mensaje por MSN a yesik Enviar un mensaje por Skype™ a yesik
pues ya lo habia probado pero nada, no consigo acceder al xml, no se si estará ahi como xml la variable q llega aunq creo q si pq con un alert me lo muestra...
Gracias de todas frmas....
__________________
Inmuebles de Galicia:: www.inmueblevirtual.net
Compartir piso Galicia:: www.inmueblevirtual.net/foro
yesik está desconectado   Responder Citando
Antiguo 21-nov-2006, 04:28   #4 (permalink)
Moderadora
tunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradable
 
Avatar de tunait
 
Fecha de Ingreso: noviembre-2002
Ubicación: Terok Nor
Mensajes: 14.964
¿Cómo estás creando al objeto xml?
tunait está desconectado   Responder Citando
Antiguo 21-nov-2006, 04:32   #5 (permalink)
yesik está en el buen camino
 
Avatar de yesik
 
Fecha de Ingreso: octubre-2004
Ubicación: Orense
Mensajes: 293
Enviar un mensaje por MSN a yesik Enviar un mensaje por Skype™ a yesik
bueno lo creo como explike en el 1º postbal principio y la llamada a esa pagina seria así:
<script language="javascript">
loadbusqueda(param,'<?php require_once("crearxml.php")?>');
</script>

aunq ya lo he probado de otra forma lo tengo en una página aparte para aislar pero nana... gracias d nuevo
__________________
Inmuebles de Galicia:: www.inmueblevirtual.net
Compartir piso Galicia:: www.inmueblevirtual.net/foro
yesik está desconectado   Responder Citando
Antiguo 21-nov-2006, 04:37   #6 (permalink)
Moderadora
tunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradable
 
Avatar de tunait
 
Fecha de Ingreso: noviembre-2002
Ubicación: Terok Nor
Mensajes: 14.964
Y qué hay en loadbusqueda() ??
tunait está desconectado   Responder Citando
Antiguo 21-nov-2006, 04:42   #7 (permalink)
yesik está en el buen camino
 
Avatar de yesik
 
Fecha de Ingreso: octubre-2004
Ubicación: Orense
Mensajes: 293
Enviar un mensaje por MSN a yesik Enviar un mensaje por Skype™ a yesik
pues sería esto.. son funciones de googlemaps, todo funciona hasta q intento leer el xml

function loadbusqueda(address,xml) {
alert(address); //recibe ok
alert(xml); //recibe ok
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.addControl(new GOverviewMapControl());
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
geocoder = new GClientGeocoder();
if (geocoder) {
geocoder.getLatLng(address,function(point) { map.setCenter(point, 13);});
}

var markers = xml.getElementsByTagName("casa");
alert(markers.length);

}// si es compatible
}//fin funcion
__________________
Inmuebles de Galicia:: www.inmueblevirtual.net
Compartir piso Galicia:: www.inmueblevirtual.net/foro
yesik está desconectado   Responder Citando
Antiguo 21-nov-2006, 06:03   #8 (permalink)
Moderadora
tunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradable
 
Avatar de tunait
 
Fecha de Ingreso: noviembre-2002
Ubicación: Terok Nor
Mensajes: 14.964
Bueno, esa función usa otras funciones de google y si no las tienes todas te tirará errores.

Hay formas más sencillas para crear un objeto xml con javascript. w3schools propone un código sencillo crossbrowser http://www.w3schools.com/xml/xml_parser.asp el asunto es que es para cargar el xml de un archivo externo y por lo que veo estás cargando el xml como texto enviándolo directamente en el argumento de la función.

Aquí encontré un código crossbrowser para cargar el xml desde string, mira si te sirve

http://developer.mozilla.org/en/docs...rer_to_Mozilla


Adaptándolo a lo que quieres quedaría algo así

Código:
var myDocument; 
xmlString = '<? require_once("crearxml.php"); ?>'


  if (document.implementation.createDocument){ 
    // Mozilla, create a new DOMParser 
    var parser = new DOMParser(); 
    myDocument = parser.parseFromString(xmlString, "text/xml"); 
  } else if (window.ActiveXObject){ 
    // Internet Explorer, create a new XML document using ActiveX 
    // and use loadXML as a DOM parser. 
    myDocument = new ActiveXObject("Microsoft.XMLDOM"); 
    myDocument.async="false"; 

    myDocument.loadXML(xmlString);
  }
  var markers = myDocument.getElementsByTagName("casa");
alert(markers.length);
Mira a ver si así te sirve

un saludo
tunait está desconectado   Responder Citando
Antiguo 21-nov-2006, 08:31   #9 (permalink)
yesik está en el buen camino
 
Avatar de yesik
 
Fecha de Ingreso: octubre-2004
Ubicación: Orense
Mensajes: 293
Enviar un mensaje por MSN a yesik Enviar un mensaje por Skype™ a yesik
hola de nuevo ,y gracias por tu amabilidad lo he probado todo con este XML y aun no he conseguido leer de el, lo he probado tal como me has dicho pero no se pq makers tiene valor 0 aunque el xmlesta ahí....
intentare probar ahora con AJAX creando el xml aunque con pocas esperanzas... dices q lo puedo hacer más sencillo cargando directamente el xml pero no se como...

Gracias y un saludo
__________________
Inmuebles de Galicia:: www.inmueblevirtual.net
Compartir piso Galicia:: www.inmueblevirtual.net/foro
yesik está desconectado   Responder Citando
Antiguo 21-nov-2006, 09:47   #10 (permalink)
Moderadora
tunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradable
 
Avatar de tunait
 
Fecha de Ingreso: noviembre-2002
Ubicación: Terok Nor
Mensajes: 14.964
Ah, qué despiste, se me olvidó comentarte algo que ví en el código php que genera el xml ... si lo pruebas como xml da error de parseo xml, por eso no te devuelve nada.

fíjate

Código:
$stringxml = '';
		$stringxml .= '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
		$stringxml .= '<?xml-stylesheet type="text/xsl" href="copy.xsl"?>';
		$stringxml .= '<dxml>';

								for($i=0; $i < count($encontrados_casa); $i++)
									{
        $stringxml .= '  <casa>';
		$stringxml .= '     <provincia>'.$encontrados_casa[$i]['Provincia'].'</provincia>';
		$stringxml .= '     <poblacion>'.$encontrados_casa[$i]['Localidad'].'</poblacion>';
		$stringxml .= '     <coorx>'.$encontrados_casa[$i]['COORX'].'</coorx>';
		$stringxml .= '     <cory>'.$encontrados_casa[$i]['COORY'].'</coory>';
		$stringxml .= '  </casa>';
Se omitó una o en el tag de apertura de coory, de forma que se abre cory y se cierra coory, así que no queda un documento bien formado. Cambia eso y me cuentas

un saludo
tunait está desconectado   Responder Citando
Antiguo 21-nov-2006, 15:39   #11 (permalink)
yesik está en el buen camino
 
Avatar de yesik
 
Fecha de Ingreso: octubre-2004
Ubicación: Orense
Mensajes: 293
Enviar un mensaje por MSN a yesik Enviar un mensaje por Skype™ a yesik
muchiiiiisimas gracias tunait, de verdad menudo error de pardillo, como todos los míos jaja,
estoy empezadoc con esto de XML, y hay muchas cosas q no ntiendo , x ejemplo este q he hecho se supone bien formado no?
pero.... con esta estructura no funciona algo así::

var markers = myDocument.getElementsByTagName("casa");
markers[i].getAttribute("provincia");

ó se debe acceder de otra fora o quizas crear el xml de otra forma asi...

<casa provincia="valorprovincia" localidad="valor" />

Gracias de nuevo por todo, de verdad
__________________
Inmuebles de Galicia:: www.inmueblevirtual.net
Compartir piso Galicia:: www.inmueblevirtual.net/foro
yesik está desconectado   Responder Citando
Antiguo 22-nov-2006, 03:44   #12 (permalink)
Moderadora
tunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradable
 
Avatar de tunait
 
Fecha de Ingreso: noviembre-2002
Ubicación: Terok Nor
Mensajes: 14.964
Efectivamente. Cuando usas getAttribute se busca un atributo en el elemento y no a uno de sus nodos hijo.

getAttribute("provincia") buscará si tiene ese atributo el elemento casa

<casa provincia="la provincia">

El problema de definir así todos los valores de lo que pueda tener una casa es que pueden haber valores demasiado largos, por ejemplo si le quieres poner una descripción.

Usa el DOM para acceder a esos elementos y busca el valor de los nodos de texto que contienen.

Si en markers guardas un elemento casa concreto puedes acceder a los elementos x contenidos en ese elemento casa de la misma forma que referenciaste a casa y al haber uno sólo de cada en cada elemento casa podrás acceder a él usando la posición 0

markers[0].getElementsByTagName('provincia')[0] apunta al elemento provincia del elemento casa con el que estés trabajando.

Para saber lo que contiene su nodo de texto accedes a él mediante firstChild.nodeValue

Prueba a pedirle una alerta de
Código:
markers[0].getElementsByTagName('provincia')[0].firstChild.nodeValue
Un saludo
tunait está desconectado   Responder Citando
Antiguo 22-nov-2006, 04:12   #13 (permalink)
yesik está en el buen camino
 
Avatar de yesik
 
Fecha de Ingreso: octubre-2004
Ubicación: Orense
Mensajes: 293
Enviar un mensaje por MSN a yesik Enviar un mensaje por Skype™ a yesik
muchas gracias de nuevo iba a postear para decirte q ya habia encontrado la soluccion pero te me has adelantado,,
ahora me keda pelear con googlemaps

....un saludo...
__________________
Inmuebles de Galicia:: www.inmueblevirtual.net
Compartir piso Galicia:: www.inmueblevirtual.net/foro
yesik está desconectado   Responder Citando
Antiguo 22-nov-2006, 04:39   #14 (permalink)
Moderadora
tunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradable
 
Avatar de tunait
 
Fecha de Ingreso: noviembre-2002
Ubicación: Terok Nor
Mensajes: 14.964
Estupendo y suerte en tu pelea con googlemaps
tunait está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 18:08.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93