Je travaille sur une application Web qui doit envoyer du code XML à un serveur principal. Je voudrais construire un document XML en mémoire sur le côté client, mais en utilisant des routines de manipulation XML, au lieu d'ajouter d'innombrables chaînes ensemble. J'espère que jQuery peut m'aider.Générer un document XML en mémoire avec JavaScript
Disons que je dois générer ce document XML (jouet) avec 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>
Pour commencer, je dois créer une sorte d'un objet de document XML avec la racine « rapport ». Je suppose un d'eux doit être proche, mais aucun d'entre eux travaillent tout à fait raison, et/ou je ne peux pas tout à fait comprendre comment utiliser correctement l'objet:
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;
}
Maintenant, je veux créer et ajouter éléments. Comment je fais ça? J'imagine que c'est quelque chose comme ceci:
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;
}
Des idées?
Assurez-vous de vérifier la solution @AlexanderN à la fin si vous voulez la méthode d'un grand plugin créer des structures XML, y compris des attributs et CDATA. – whyoz