From eb0e895eab0f93837b17bc382e0655e5126cad63 Mon Sep 17 00:00:00 2001 From: szewczyw Date: Mon, 10 Feb 2025 13:24:49 +0100 Subject: [PATCH] fixed formatXML() --- Backend-libXML/Parser.py | 17 ++++++++++------- Backend-libXML/main.py | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Backend-libXML/Parser.py b/Backend-libXML/Parser.py index 547b5f5..8d35e48 100644 --- a/Backend-libXML/Parser.py +++ b/Backend-libXML/Parser.py @@ -23,7 +23,7 @@ def formatHTML(source: str, prettify: bool) -> str: return html.tostring(htmlDoc).decode().replace("\n", "").replace("> ", ">") return etree.tostring(htmlDoc, encoding='unicode', pretty_print=True) -def formatXML(source: str) -> str: +def formatXML(source: str, prettify: bool) -> str: """Method used to format XML :param source: XML to format @@ -40,14 +40,20 @@ def formatXML(source: str) -> str: if prolog_start != -1: prolog_end = source.find("?>") + 2 prolog = source[prolog_start:prolog_end] - source = source[prolog_end: ] - + source = source[prolog_end:].strip() + byte_input = BytesIO(source.encode("utf-8")) parser = etree.XMLParser(remove_blank_text=True) xml = etree.parse(byte_input, parser=parser) - return prolog + etree.tostring(xml, pretty_print=False).decode() + if prettify: + prolog += "\n" + return prolog + etree.tostring(xml, pretty_print=True, encoding="utf-8").decode("utf-8") + raw_xml = etree.tostring(xml, encoding="utf-8").decode("utf-8") + raw_xml = " ".join(raw_xml.split()) + + return prolog + raw_xml def xpath(source: str, xpath: str) -> str: """ @@ -80,7 +86,6 @@ def xpath(source: str, xpath: str) -> str: return result_string, "node" - def xsd(source: str, xsd: str) -> bool: """ Method used to validate XML string against XSD schema @@ -101,8 +106,6 @@ def xsd(source: str, xsd: str) -> bool: except etree.DocumentInvalid as e: return str(e) - - def xslt(source: str, xslt: str) -> str: """ Method used to transform XML string using XSLT diff --git a/Backend-libXML/main.py b/Backend-libXML/main.py index 50d6cec..52999b4 100644 --- a/Backend-libXML/main.py +++ b/Backend-libXML/main.py @@ -39,7 +39,7 @@ def process_xml(request: request, type: str) -> str: # elif (type == "prettify"): # response_json['result'] = Parser.formatXML(data, True) elif (type == "minimize"): - response_json['result'] = Parser.formatXML(data) + response_json['result'] = Parser.formatXML(data, False) elif (type == "prettifyHtml"): response_json['result'] = Parser.formatHTML(data, True) elif (type == "minimizeHtml"):