• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

281
Vistas
Ordenar XML no devuelve un valor

Lo que hice fue analizar la var a , ordenarla y luego mostrarla. No devuelve valor ni error.

 var a = '<root><ap by="A" on="2021/10/01 14:03:24" lvl="4"></ap><ap by="A" on="2021/10/01 14:03:59" lvl="2"></ap><ap by="A" on="2021/10/01 14:04:01" lvl="5"></ap><ap by="A" on="2021/10/01 14:04:05" lvl="1"></ap></root>'; $($.parseXML(a), function (log) { var ap = $(log).find($(this)).clone(); ap.sort(function (a, b) { return (parseInt($(a).attr("lvl")) - parseInt($(b).attr("lvl"))); }); ap.find("ap").each(function () { var ap = $(this); var by = ap.attr("by"); var on = kendo.parseDate(ap.attr("on")); var lvl = parseInt(ap.attr("lvl")); if (apdate.html() != "") $("<br>").appendTo(apdate); $("<span" + props + ">").text(by + " (" + kendo.toString(on, User.datetimeFormat) + ") (" + lvl + ")").appendTo(apdate); });

Pude mostrar los datos sin ordenar usando esto. Supuse que el problema está en mi código de clasificación.

 $($.parseXML(a).find("ap").each(function () { var ap = $(this); var by = ap.attr("by"); var on = kendo.parseDate(ap.attr("on")); var lvl = parseInt(ap.attr("lvl")); var props = ""; if (apdate.html() != "") $("<br>").appendTo(apdate); $("<span" + props + ">").text(by + " (" + kendo.toString(on, User.datetimeFormat) + ") (" + lvl + ")").appendTo(apdate);
about 3 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Estaba haciendo referencia a la respuesta aquí enlace

Desde ese enlace: $.get es una llamada asincrónica para cargar un archivo xml, con una devolución de llamada para cuando se haya completado. No tiene un archivo, tiene una cadena: la cadena no necesita "cargarse" de forma asincrónica (ya que ya está cargada).

Así que ahí tienes:

 $.get("remote_file_url.xml", callback_when_loaded(xml) { ...

pero aquí quieres:

 var a = "<root>..."; var xml = $.parseXML(a) var log = $(xml); var ap = log.find("ap")...

entonces puede usar log como un objeto jquery. $.parseXML(a) le dará un objeto de documento XML, pero para usar los métodos de jquery, debe ser un objeto de jquery, así que envuélvalo en $() - esto es equivalente a usar this en un controlador de eventos: this = a nodo DOM y $(this) = objeto jquery.


Más adelante tienes ap.find("ap") como ap ya = $(xml).find("ap") este es el equivalente de $(xml).find("ap").find("ap")


Código actualizado (con algunos ajustes menores para eliminar el código "kendo" irrelevante)

 var a = '<root><ap by="A" on="2021/10/01 14:03:24" lvl="4"></ap><ap by="A" on="2021/10/01 14:03:59" lvl="2"></ap><ap by="A" on="2021/10/01 14:04:01" lvl="5"></ap><ap by="A" on="2021/10/01 14:04:05" lvl="1"></ap></root>'; var log = $($.parseXML(a)) console.log(log.find("ap").length) var ap = log.find("ap").clone(); //console.log(ap) ap.sort(function(a, b) { return (parseInt($(a).attr("lvl")) - parseInt($(b).attr("lvl"))); }); //console.log(ap) ap.each(function() { var ap = $(this); var by = ap.attr("by"); //var on = kendo.parseDate(ap.attr("on")); var lvl = parseInt(ap.attr("lvl")); apdate = $("#output") if (apdate.html() != "") $("<br>").appendTo(apdate); $("<span>").text(by + "(" + lvl + ")").appendTo(apdate); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id='output'></div>

about 3 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda