Files
dbgate/packages/web/src/celldata/formatXml.ts
2025-02-11 16:51:39 +01:00

25 lines
628 B
TypeScript

export default function formatXml(xml: string): string {
if (typeof xml !== 'string') return '';
xml = xml.replace(/>\s*</g, '><');
let formatted = '';
let indent = 0;
const tags = xml.split(/(<.*?>)/g).filter(s => s.trim());
for (let tag of tags) {
if (tag.startsWith('</')) {
indent--;
formatted += '\n' + ' '.repeat(indent) + tag;
} else if (tag.startsWith('<') && !tag.endsWith('/>') && !tag.startsWith('<?')) {
formatted += '\n' + ' '.repeat(indent) + tag;
indent++;
} else {
formatted += '\n' + ' '.repeat(indent) + tag;
}
}
return formatted.trim();
}