38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { formatObjKey } from './formatObjKey';
 | 
						|
 | 
						|
function type(params) {
 | 
						|
  return Object.prototype.toString
 | 
						|
    .call(params)
 | 
						|
    .replace(/(.*? |])/g, '')
 | 
						|
    .toLowerCase();
 | 
						|
}
 | 
						|
 | 
						|
export function obj2xml(obj, options?) {
 | 
						|
  let s = '';
 | 
						|
  if (options && options.headers) {
 | 
						|
    s = '<?xml version="1.0" encoding="UTF-8"?>\n';
 | 
						|
  }
 | 
						|
  if (options && options.firstUpperCase) {
 | 
						|
    obj = formatObjKey(obj, 'firstUpperCase');
 | 
						|
  }
 | 
						|
  if (type(obj) === 'object') {
 | 
						|
    Object.keys(obj).forEach(key => {
 | 
						|
      // filter undefined or null
 | 
						|
      if (type(obj[key]) !== 'undefined' && type(obj[key]) !== 'null') {
 | 
						|
        if (type(obj[key]) === 'string' || type(obj[key]) === 'number') {
 | 
						|
          s += `<${key}>${obj[key]}</${key}>`;
 | 
						|
        } else if (type(obj[key]) === 'object') {
 | 
						|
          s += `<${key}>${obj2xml(obj[key])}</${key}>`;
 | 
						|
        } else if (type(obj[key]) === 'array') {
 | 
						|
          s += obj[key].map(keyChild => `<${key}>${obj2xml(keyChild)}</${key}>`).join('');
 | 
						|
        } else {
 | 
						|
          s += `<${key}>${obj[key].toString()}</${key}>`;
 | 
						|
        }
 | 
						|
      }
 | 
						|
    });
 | 
						|
  } else {
 | 
						|
    s += obj.toString();
 | 
						|
  }
 | 
						|
  return s;
 | 
						|
}
 |