English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Converter objeto para XML em js

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.)

Você também pode gostar