English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Este código resolve esses dois problemas:
1.Como os objetos js não têm conceito de classe, é necessário especificar manualmente o nome do nó de nível superior na conversão
2.Se os elementos dentro do array forem do tipo objeto, é necessário configurar o nome do nó deste elemento do array
var XmlHelper = function() { var _arrayTypes = {}; var _self = this; /* *Converter objeto para xml *@obj objeto alvo *@rootname nome do nó *@arraytypes configuração do nome do nó do elemento subarray */ 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; } } //===========Teste========= var xmlhelper=new XmlHelper(); //Exemplo1 var testobj={ field1:"1", field2:true, field3[{a:1},{a:2}] } console.log(xmlhelper.parseToXML(testobj,"testobj",{field3:"ArrayItem"}); //Saída:<testobj><field1>1</field1><field2>true</field2><field3><ArrayItem><a>1</a></ArrayItem><ArrayItem><a>2</a></ArrayItem></field3></testobj> console.log("================================================"); //Exemplo2 var testobj2=[1,2,3]); console.log(xmlhelper.parseToXML(testobj2,"testobj2")); //Saída:<testobj2><number>1</number><number>2</number><number>3</number></testobj2>
Este código de conversão tem restrições de uso
Melhor evitar que os nomes dos campos de valor de array sejam idênticos
Isso é tudo o que há no artigo, esperamos que o conteúdo deste artigo ajude a aprendizagem ou ao trabalho de todos, e também esperamos que recebam mais apoio ao tutorial de gritaria!
Declaração: O conteúdo deste artigo foi extraído da Internet, pertence ao respectivo proprietário, foi submetido e carregado voluntariamente pelos usuários da Internet, o site não possui direitos de propriedade, não foi editado artificialmente e não assume responsabilidade legal. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#oldtoolbag.com (ao enviar e-mail, troque # por @ para denunciar e forneça provas relevantes. Se confirmado, o site deletará imediatamente o conteúdo suspeito de violação de direitos autorais.)