Skip to content
Snippets Groups Projects
Commit 83ddacc5 authored by Benedikt's avatar Benedikt
Browse files

Merge remote-tracking branch 'origin/devel_xmlschemaLibary' into devel_xmlschemaLibary

parents f3e4993f cdac2c99
No related branches found
No related tags found
No related merge requests found
import os import os
from xml.etree.ElementTree import ElementTree
import xmlschema import xmlschema
from jinja2 import Environment, PackageLoader, select_autoescape from jinja2 import Environment, PackageLoader, select_autoescape
import lxml.etree as ElementTree import lxml.etree as ElementTree
...@@ -109,7 +108,7 @@ class XMLSchemaConverter: ...@@ -109,7 +108,7 @@ class XMLSchemaConverter:
converted_data = get_from_dict(conversion_result[0], template_info['json_path']) converted_data = get_from_dict(conversion_result[0], template_info['json_path'])
return converted_data, conversion_result[1] return converted_data, conversion_result[1]
def convert_json_to_xml(self, input_data) -> tuple[str, ElementTree, list[Exception]]: def convert_json_to_xml(self, input_data) -> tuple[str, ElementTree.ElementTree, list[Exception]]:
"""Serialize data back into XML format """Serialize data back into XML format
Args: Args:
...@@ -182,25 +181,65 @@ class XMLSchemaConverter: ...@@ -182,25 +181,65 @@ class XMLSchemaConverter:
converter=XMLSchemaConverter() converter=XMLSchemaConverter()
def XMLToJson(xml): def XMLToJson(xml) -> str:
"""Deserialize XML to JSON
Args:
xml: xml data to parse. Can be an XMLResource instance, a file-like object a path to a file or a URI of a resource or an Element instance or an ElementTree instance or a string containing the XML data.
Returns:
str: JSON-String
"""
dict, errors=converter.convert_xml_to_json(xml) dict, errors=converter.convert_xml_to_json(xml)
return json.dumps(dict) return json.dumps(dict)
def XMLToDict(xml): def XMLToDict(xml) -> tuple[dict, list[Exception]]:
"""Deserialize XML to dict
Args:
xml: xml data to parse. Can be an XMLResource instance, a file-like object a path to a file or a URI of a resource or an Element instance or an ElementTree instance or a string containing the XML data.
Returns:
tuple[dict, list[Exception]]: data as dict; list of exceptions that occurred during parsing
"""
dict, errors=converter.convert_xml_to_json(xml) dict, errors=converter.convert_xml_to_json(xml)
return dict, errors return dict, errors
def JSONToXML(jsonData): def JSONToXML(jsonData: str) -> str:
"""Serialize data from JSON format to XML
Args:
jsonData (str): the data that has to be encoded to XML
Returns:
str: XML string
"""
xml_str, converted_element, errors=converter.convert_json_to_xml(json.loads(jsonData)) xml_str, converted_element, errors=converter.convert_json_to_xml(json.loads(jsonData))
return xml_str return xml_str
def DictToXML(dataDict): def DictToXML(dataDict: dict) -> tuple[str, ElementTree.ElementTree, list[Exception]]:
"""Serialize data from dict to XML
Args:
dataDict (dict): data to be serialized
Returns:
tuple[str, ElementTree.ElementTree, list[Exception]]: string containing the XML; ElementTree representation of the XML; and list of exceptions that occurred during serialization
"""
xml_str, converted_element, errors=converter.convert_json_to_xml(dataDict) xml_str, converted_element, errors=converter.convert_json_to_xml(dataDict)
return xml_str,converted_element, errors return xml_str,converted_element, errors
def beautify_xml(text): def beautify_xml(text: str) -> str:
"""Beautify XML string
Args:
text (str): ugly XML string
Returns:
str: pretty XML string
"""
parser = ElementTree.XMLParser(remove_blank_text=True, ns_clean=True) parser = ElementTree.XMLParser(remove_blank_text=True, ns_clean=True)
test = text.replace("\\\"", "\"") test = text.replace("\\\"", "\"")
# print(test) # print(test)
...@@ -208,5 +247,5 @@ def beautify_xml(text): ...@@ -208,5 +247,5 @@ def beautify_xml(text):
tree = ElementTree.fromstring(test, parser=parser) tree = ElementTree.fromstring(test, parser=parser)
ret = ElementTree.tostring(tree, pretty_print=True, encoding="unicode") ret = ElementTree.tostring(tree, pretty_print=True, encoding="unicode")
except: except:
ret = "<ERROR>dcc_stuff:beautyfy_xml failed </ERROR>" ret = "<ERROR>dcc_stuff:beautify_xml failed </ERROR>"
return ret return ret
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment