/**
 * XML 특수문자 이스케이프
 * SerialNo 등에 <, &, " 같은 문자가 들어가면 SP 파싱 오류 발생 방지
 */
export function escapeXml(v: unknown): string {
  if (v == null) return '';

  if (typeof v === 'string') {
    return v
      .replace(/&/g, '&amp;')
      .replace(/</g, '&lt;')
      .replace(/>/g, '&gt;')
      .replace(/"/g, '&quot;')
      .replace(/'/g, '&apos;');
  }

  if (typeof v === 'number' || typeof v === 'boolean') {
    return String(v)
      .replace(/&/g, '&amp;')
      .replace(/</g, '&lt;')
      .replace(/>/g, '&gt;')
      .replace(/"/g, '&quot;')
      .replace(/'/g, '&apos;');
  }

  // object, function, symbol 등은 명시적으로 거부
  return '';
}
