Foros del Web » Programando para Internet » Javascript »

Consulta XML desde Javascript

Estas en el tema de Consulta XML desde Javascript en el foro de Javascript en Foros del Web. Hola a todos Tengo un problema y necesito algo de ayuda. Estoy haciendo una aplicación para dispositivos móviles con phonegap y javascript,en esta aplicacion necesito ...
  #1 (permalink)  
Antiguo 13/05/2013, 18:32
 
Fecha de Ingreso: septiembre-2008
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Consulta XML desde Javascript

Hola a todos

Tengo un problema y necesito algo de ayuda. Estoy haciendo una aplicación para dispositivos móviles con phonegap y javascript,en esta aplicacion necesito consultar y modificar archivos xml, que ya he hecho, pero mi cuetion es con consultas un poco complejas, necesito hacer una consulta tipo sql con inner join o left join pero en javascript o jquery para mi aplicación.

hasta ahora he hecho consultas "simples" de un solo xml y con una sola condición con :
var xml = $(MyXml).find("dato").filter(function () {
return $(this).find("Id").text() == "18";
});

bueno queria saber si hay manera de hacer una consulta tipo inner join o left join de dos o mas archivos xml (que utilizo como base de datos)

la aplicacion esta pensada para trabajar ofline,por lo que no puedo requrrir a lenguaje de servidor y hacer las consultas sql directamente en el servidor.

se los agradezco!
saludos!
  #2 (permalink)  
Antiguo 14/05/2013, 13:32
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Consulta XML desde Javascript

Hola,

Hay una librería que pretende portar LINQ to XML a Javascript, pero todavía está en fase beta y no tiene mucha documentación.

http://ltxmljs.codeplex.com/releases/view/98929

Tambien hay muchas librerías que han portado LINQ to Objects a Javascript (hay varias y parecen bastante buenas) por sí pudieses cambiar el xml por json.

Un saludo.
  #3 (permalink)  
Antiguo 15/05/2013, 09:15
 
Fecha de Ingreso: septiembre-2008
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Consulta XML desde Javascript

Interesante, parece que es lo que necesito
voy a investigarlo
gracias!!!
  #4 (permalink)  
Antiguo 15/05/2013, 09:20
 
Fecha de Ingreso: septiembre-2008
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Consulta XML desde Javascript

Interesante, parece que es lo que necesito
voy a investigarlo
gracias!!!
  #5 (permalink)  
Antiguo 17/05/2013, 09:00
 
Fecha de Ingreso: septiembre-2008
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Consulta XML desde Javascript

Buenas,
alguien sabe como convertir un xml a json para poder utilizar esta libreria?
mi xml es generado a partir de un dataset en c# y tiene esta estructura


Código:
<NewDataSet>
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="clientes">
<xs:complexType>
<xs:sequence>
<xs:element name="Id" type="xs:int" minOccurs="0"/>
<xs:element name="RazonSocial" type="xs:string" minOccurs="0"/>
<xs:element name="Calle" type="xs:string" minOccurs="0"/>
...
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<clientes>
<Id>1</Id>
<Rfc>xaxx010101000</Rfc>
<RazonSocial>Razon Social</RazonSocial>
<Calle>benito juarez</Calle>
...
</clientes>
<clientes>
<Id>2</Id>
<Rfc>XAXX010101000</Rfc>
<RazonSocial>Nombre</RazonSocial>
<Calle>Calle</Calle>
...
</clientes>
</NewDataSet>
gracias!
  #6 (permalink)  
Antiguo 17/05/2013, 18:28
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Consulta XML desde Javascript

Buenas,

Puedes mirar esta página: http://www.etnassoft.com/2011/04/20/...de-javascript/, donde han realizado una función para convertir xml a json.

Si necesitas cambiar algo, puedes ajustarla a tus necesidades.

Un saludo.
  #7 (permalink)  
Antiguo 21/05/2013, 18:12
 
Fecha de Ingreso: septiembre-2008
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Consulta XML desde Javascript

que tal, casi resuelvo mi conflicto del json,
bueno, necesito un array matriz.

Código:
a = [];
b = [];

for (var j = 0; j < 5; j++) {
    for (var i = 0; i < 5; i++) {
   a[i] = [];
        a[i].push(j);
    }    
    b.push(a);
}

alert(JSON.stringify(b));
con el codigo anterior obtengo el siguiente resultado
Código:
[
[[4],[4],[4],[4],[4]],
[[4],[4],[4],[4],[4]],
[[4],[4],[4],[4],[4]],
[[4],[4],[4],[4],[4]],
[[4],[4],[4],[4],[4]]
]
pero lo que necesito y no se porque no queda asi es lo siguiente
Código:
[
[[0],[0],[0],[0],[0]],
[[1],[1],[1],[1],[1]],
[[2],[2],[2],[2],[2]],
[[3],[3],[3],[3],[3]],
[[4],[4],[4],[4],[4]]
]
segun yo este codigo deberia llenar la primera posicion con el arreglo de5 lugares con el numero 0, en la segunda pasada la segunda posicion con el numero 1 y hasta llegar a la 5ta posicion con el munero 4,
pero lo que hace es en la primera pasada lo llena con el numero 0, en la segunda pasada llena todas las posiciones con el numero 1, en la siguiente llena todo con el numero 2 hasta llegar a la ultima pasada y llenar todo con el numero 4.

pueden ejecutar el codigo en el enlace http://jsfiddle.net/
lo copian en la seccion de javascript y le dan a run
  #8 (permalink)  
Antiguo 22/05/2013, 12:49
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Tenías varios errores al usar la función push.

Sería algo así:

Código Javascript:
Ver original
  1. a = [];
  2. b = [];
  3.  
  4. for (var j = 0; j < 5; j++) {
  5.    a=[];
  6.  
  7.  for (var i = 0; i < 5; i++) {
  8.        
  9.         a[i] = [];
  10. a[i].push(j);
  11.     }    
  12.     b[j] = a
  13. }
  14.  
  15. alert(JSON.stringify(b));

Última edición por alexg88; 22/05/2013 a las 13:33
  #9 (permalink)  
Antiguo 23/05/2013, 10:05
 
Fecha de Ingreso: septiembre-2008
Mensajes: 74
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Consulta XML desde Javascript

cierto alexg88 lo que faltaba era declarar el arreglo a=[]; en el primer for, ya lo hacia únicamente en el segundo y pedia su valor fuera de este, creo que por eso no hacia lo que yo queria,pero ya lo resolvi y ahora tengo mi json con la estructura adeuada para trabajar con linq,

pongo la funcion para convertir un xml a json que utilice para trabajar con la libreria linq


Código Javascript:
Ver original
  1. function xmlToJson2(xml, tabla) {
  2. //--xml es el xml cargado(con estructura como el que puse anteriormente)  
  3. //-- tabla es el nodo que tiene los datos que quieren tomar(en el xml que puse seria clientes)
  4.         var arreglo = {};
  5.         var matriz = new Array();
  6.         var contxml = xml.getElementsByTagName(tabla);
  7.  
  8.         for (var j = 0; j < contxml.length; j++) {
  9.             arreglo = [];
  10.             if (contxml[j].hasChildNodes()) {
  11.                 for (var i = 0; i < contxml[j].childNodes.length; i++) {
  12.                     var item = contxml[j].childNodes.item(i);
  13.                     var nodeName = item.nodeName;
  14.                     var itemContent = item.textContent;
  15.  
  16.                     if (nodeName != "#text") {
  17.                         arreglo[nodeName] = [];
  18.                         arreglo[nodeName].push(itemContent);
  19.                     }
  20.                 }
  21.             }
  22.             matriz.push(arreglo);
  23.         }
  24.         return matriz;
  25.     }

Lo unico que me queda es construir mis consultas en linq

gracias!

Etiquetas: jquery, phonegap, 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:03.