Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Parsear XML a partir de una cadena o variable

Estas en el tema de Parsear XML a partir de una cadena o variable en el foro de Frameworks JS en Foros del Web. Hola a todos Despues de mucho buscar no he encontrado como parsear un xml guardado en una variable de tipo cadena. Me explico: Estoy usando ...
  #1 (permalink)  
Antiguo 26/05/2006, 14:31
Avatar de mega82es  
Fecha de Ingreso: septiembre-2005
Mensajes: 38
Antigüedad: 18 años, 7 meses
Puntos: 0
Parsear XML a partir de una cadena o variable

Hola a todos

Despues de mucho buscar no he encontrado como parsear un xml guardado en una variable de tipo cadena.

Me explico:
Estoy usando la biblioteca prototype.js junto con scriptaculous.js.

Esta libreria provee de un objeto llamado Ajax.Request que maneja todo lo necesario para traer la peticion mediante AJAX.

El codigo para hacer la peticion es el siguiente:
Código PHP:
var myAjax = new Ajax.Request(
            
url
            {
                
method'get'
                
parameterspars
                
onCompleteshowResponse
            
});

function 
showResponse(originalRequest)
    {
        
//put returned XML in the textarea
        
$('result').value originalRequest.responseText;

    } 
result es el id de un area de texto, donde se muestra el resultado

nota:
$('result') es equivalente document.getElementById('result');



En el area de texto aparece el siguiente xml:
Código:
<?xml version="1.0" encoding="utf-8" ?> 
<ajax-response>
    <response type="object" id="productDetails">
        <monthly-sales>
            <employee-sales>
                <employee-id>1234</employee-id> 
                <year-month>1998-01</year-month> 
                <sales>$8,115.36</sales> 
            </employee-sales>
            <employee-sales>
                <employee-id>1234</employee-id> 
                <year-month>1998-02</year-month> 
                <sales>$11,147.51</sales> 
            </employee-sales>
        </monthly-sales>
    </response>
</ajax-response>
Necesito actualizar el formulario con los valores del xml.
Mi duda es: ¿como le puedo hacer para interpretar ese xml para actualizar campos de un formulario?.

De antemano Gracias.
  #2 (permalink)  
Antiguo 26/05/2006, 15:39
Avatar de Covids0020  
Fecha de Ingreso: septiembre-2003
Ubicación: España
Mensajes: 217
Antigüedad: 20 años, 6 meses
Puntos: 1
A lo mejor te sirve simplepie, aunque está dirigido a RSS creo que viendo su código y modificandolo un poco podrás sacarlo a tu gusto.

Otra cosa... pffff, tu propio parser?? :S
__________________
"La sabiduría comienza donde acaba el conocimiento". Yaris.
http://www.culturadigital.org
  #3 (permalink)  
Antiguo 26/05/2006, 15:58
Avatar de mega82es  
Fecha de Ingreso: septiembre-2005
Mensajes: 38
Antigüedad: 18 años, 7 meses
Puntos: 0
Muchas gracias Covids0020. Cheque simplepie y veo es una libreria para php, pero lo que necesito es una libreria (o codigo) que se utilice en javascript, ya que la variable que contiene el xml es un String Javascript.

En el xml de arriba, se asume que existe un formulario con los campos employee-id, year-month, y sales, que despues de hacer el parsing deben tener los valores 1234,1998-01 y $8,115.36. (Aunque una vez haciendo el parsing, no es tan complicado cambiar el valor a los campos correspondientes)

Sigo investigando, si lo resuelvo lo voy a postear por si el eml futuro le sirve a alguien mas.

Saludos
  #4 (permalink)  
Antiguo 31/05/2006, 13:44
 
Fecha de Ingreso: enero-2004
Ubicación: Medellin
Mensajes: 178
Antigüedad: 20 años, 3 meses
Puntos: 8
leete este articulo
Código:
dobleudobleudoblwu.xml.com/pub/a/2005/02/09/xml-http-request.html
cambiar dobleudobleudoblwu por www
  #5 (permalink)  
Antiguo 31/05/2006, 15:15
Avatar de mega82es  
Fecha de Ingreso: septiembre-2005
Mensajes: 38
Antigüedad: 18 años, 7 meses
Puntos: 0
Mensaje

Gracias vicman

Estuve leyendo algunos articulos sobre este tema, y en muchos sitios me encontre que era mejor utilizar JSON en lugar de XML, porque seria como "matar una mosca a cañonazos".

JSON significa Javascript Object Notation, bueno, en resumen en lugar de recibir XML se recibe una cadena como:

Código PHP:
// Esto es javascript
{"employeeId":1234,"yearMonth":"1998-01","sales":"$8,115.36"
Y para procesarla se usa la funcion eval
Código PHP:
var myAjax = new Ajax.Request(
            
url
            {
                
method'get'
                
parameterspars
                
onCompleteshowResponse
            
});

// Aqui procesamos los detalles y actualizamos los campos correspondientes
function showResponse(originalRequest)
    {
       var 
infoEmpleado = eval("("+originalRequest.responseText+")")

        $(
'employee-id').value infoEmpleado.employeeId;
        $(
'year-month').value infoEmpleado.yearMonth;
        $(
'sales').value infoEmpleado.sales;

    } 
Aun no he tomado una decision de como hacerlo, estoy evaluando algunos riesgos que se pudieran presentar.

Saludos
  #6 (permalink)  
Antiguo 15/06/2006, 04:54
ysi
 
Fecha de Ingreso: junio-2006
Mensajes: 22
Antigüedad: 17 años, 10 meses
Puntos: 0
Mensaje Parseador JS FF/IE de xml en variable JS.

En ésta dirección tienes un ejemplo de como parsear un documento XML contenido en una variable:

editorial.ysi.net/xml/index.h tml (debajo del todo; no puedo publicar enlaces, por eso lo dejo así).

Ten cuidado que en FireFox y en I.Explorer se parsean de diferente manera; en FF se usan funciones JS y en I.E has de usar un control ActiveX.
  #7 (permalink)  
Antiguo 15/06/2006, 12:12
Avatar de NzO
NzO
 
Fecha de Ingreso: abril-2005
Mensajes: 153
Antigüedad: 19 años
Puntos: 3
Puede que esto te sea de utilida:
http://isixml.sourceforge.net/query.php
http://isiajax.sourceforge.net/demos/xml.html

Aunque si ya te has decantado por JSON todo lo anterior te sobra.
__________________
NzO=EnZo
isiAJAX & isiXML hechos el uno para el otro.
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 07:15.