English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
本代码解决这两个问题:
1.已知js对象没有类名概念,所以转换时要手动指定顶级节点名称
2.还有数组内的元素如果是对象类型,需要配置此数组元素的节点名称
var XmlHelper = function () { var _arrayTypes = {} var _self = this; /* *转换对象为xml *@obj 目标对象 *@rootname 节点名称 *@arraytypes 配置数组字段子元素的节点名称 */ this.parseToXML = function (obj, rootname, arraytypes) { if(arraytypes){ _arrayTypes=arraytypes; } var xml=""; if(typeof obj!=="undefined"){ if(Array.isArray(obj)){ xml+}=parseArrayToXML(obj,rootname); } xml+=parseObjectToXML(obj,rootname); } xml+=parseGeneralTypeToXML(obj,rootname); } } return xml; } var parseObjectToXML=function(obj,rootname){ if(typeof rootname==="undefined"||!isNaN(Number(rootname))){ rootname="Object"; } var xml="<"+rootname+">"; if(obj){ for(var field in obj){ var value=obj[field]; if(typeof value!=="undefined"){ if(Array.isArray(value)){ xml+=parseArrayToXML(value,field); } xml+=_self.parseToXML(value,field); } xml+=parseGeneralTypeToXML(value,field); } } } } xml+="</"+rootname+">"; return xml; } var parseArrayToXML=function(array,rootname){ if(typeof rootname==="undefined"||!isNaN(Number(rootname))){ rootname="Array"; } var xml="<"+rootname+">"; if(array){ var itemrootname=_arrayTypes[rootname]; array.forEach(function(item){ xml+=_self.parseToXML(item,itemrootname); }); } xml+="</"+rootname+">"; return xml; } var parseGeneralTypeToXML=function(value,rootname){ if(typeof rootname==="undefined"||!isNaN(Number(rootname))){ rootname=typeof value; } var xml="<"+rootname+">"+value+"</"+rootname+">"; return xml; } } //===========Test=========== var xmlhelper=new XmlHelper(); //Exemple1 var testobj={ field1:"1", field2:true, field3[{a:1},{a:2}] } console.log(xmlhelper.parseToXML(testobj,"testobj",{field3:"ArrayItem"}); //Sortie : <testobj><field1>1</field1><field2>true</field2><field3><ArrayItem><a>1</a></ArrayItem><ArrayItem><a>2</a></ArrayItem></field3></testobj> console.log("================================================"); //Exemple2 var testobj2=[1,2,3]); console.log(xmlhelper.parseToXML(testobj2,"testobj2")); //Sortie : <testobj2><number>1</number><number>2</number><number>3</number></testobj2>
Ce code de conversion a des restrictions d'utilisation
Il est préférable de ne pas avoir le même nom pour le champ qui contient une liste
Voici la fin de cet article. J'espère que le contenu de cet article pourra vous aider dans vos études ou votre travail, et je vous remercie de votre soutien à notre tutoriel d'alerte !
Déclaration : Le contenu de cet article est fourni par Internet, et appartient à l'auteur original. Le contenu est contribué et téléchargé par les utilisateurs d'Internet, ce site ne détient pas de droits de propriété, n'a pas été édité par l'homme, et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu suspect de violation de droit d'auteur, vous êtes invité à envoyer un email à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un email pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu suspect de violation de droit d'auteur.