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