Estoy trabajando en una aplicación web que necesita enviar XML a un servidor back-end. Me gustaría construir un documento XML en memoria en el lado del cliente, pero usando rutinas de manipulación XML, en lugar de agregar innumerables cadenas. Espero que jQuery pueda ayudarme.Generar documento XML en memoria con JavaScript
Digamos que necesito para generar este (de juguete) documento XML con JavaScript:
<report>
<submitter>
<name>John Doe</name>
</submitter>
<students>
<student>
<name>Alice</name>
<grade>80</grade>
</student>
<student>
<name>Bob</name>
<grade>90</grade>
</student>
</students>
</report>
Para empezar, tengo que crear algún tipo de un objeto documento XML con la raíz "informe". Estoy asumiendo que uno de ellos debe estar cerca, pero ninguno de ellos funciona del todo bien, y/o no acabo de encontrar la manera de utilizar el objeto correctamente:
function generateDocument1()
{
var report = $('<report></report>');
return report;
}
function generateDocument2()
{
var report = document.implementation.createDocument(null, "report", null);
return new XMLSerializer().serializeToString(report);
}
function createXmlDocument(string)
{
var doc;
if (window.DOMParser)
{
parser = new DOMParser();
doc = parser.parseFromString(string, "application/xml");
}
else // Internet Explorer
{
doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = "false";
doc.loadXML(string);
}
return doc;
}
function generateDocument3()
{
var report = createXmlDocument('<report></report>');
return report;
}
Ahora quieren crear y añadir elementos. ¿Cómo puedo hacer eso? Imagino que es algo como esto:
function generateReportXml()
{
// Somehow generate the XML document object with root
var report = /*???*/;
// Somehow create the XML nodes
var submitter = /*???*/;
var name = /*???*/;
// Somehow append name to submitter, and submitter to report
submitter.append(name); /*???*/
report.append(submitter); /*???*/
// ... append the rest of the XML
return report;
}
¿Alguna idea?
Asegúrese de que usted echa un vistazo solución @AlexanderN al final si quieres un método de gran plugin para js crear estructuras XML, incluidos atributos y CDATA. – whyoz