From d60890b1a522afbdeedf15a194a3697c3c7caadd Mon Sep 17 00:00:00 2001 From: AshAnand34 Date: Tue, 8 Jul 2025 13:10:39 -0700 Subject: [PATCH] feat(xml): add XML validation to beautification and viewing functions --- src/pages/tools/xml/xml-beautifier/service.ts | 9 ++++++++- src/pages/tools/xml/xml-viewer/service.ts | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/pages/tools/xml/xml-beautifier/service.ts b/src/pages/tools/xml/xml-beautifier/service.ts index 51371cf..8da4262 100644 --- a/src/pages/tools/xml/xml-beautifier/service.ts +++ b/src/pages/tools/xml/xml-beautifier/service.ts @@ -1,10 +1,17 @@ import { InitialValuesType } from './types'; -import { XMLParser, XMLBuilder } from 'fast-xml-parser'; +import { XMLParser, XMLBuilder, XMLValidator } from 'fast-xml-parser'; export function beautifyXml( input: string, _options: InitialValuesType ): string { + const valid = XMLValidator.validate(input); + if (valid !== true) { + if (typeof valid === 'object' && valid.err) { + return `Invalid XML: ${valid.err.msg} (line ${valid.err.line}, col ${valid.err.col})`; + } + return 'Invalid XML'; + } try { const parser = new XMLParser(); const obj = parser.parse(input); diff --git a/src/pages/tools/xml/xml-viewer/service.ts b/src/pages/tools/xml/xml-viewer/service.ts index 569f6f8..ba4e7e3 100644 --- a/src/pages/tools/xml/xml-viewer/service.ts +++ b/src/pages/tools/xml/xml-viewer/service.ts @@ -1,10 +1,17 @@ import { InitialValuesType } from './types'; -import { XMLParser, XMLBuilder } from 'fast-xml-parser'; +import { XMLParser, XMLBuilder, XMLValidator } from 'fast-xml-parser'; export function prettyPrintXml( input: string, _options: InitialValuesType ): string { + const valid = XMLValidator.validate(input); + if (valid !== true) { + if (typeof valid === 'object' && valid.err) { + return `Invalid XML: ${valid.err.msg} (line ${valid.err.line}, col ${valid.err.col})`; + } + return 'Invalid XML'; + } try { const parser = new XMLParser(); const obj = parser.parse(input);