From 809ff71bb4f91e8c9d1ca6220154ed079e2f830f Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Sun, 23 Jun 2019 22:23:28 -0700 Subject: [PATCH] Update wave_ixml_reader.py Switched XML parser from xml.etree to lxml with recovery --- wavinfo/wave_ixml_reader.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/wavinfo/wave_ixml_reader.py b/wavinfo/wave_ixml_reader.py index ee55918..9454a4c 100644 --- a/wavinfo/wave_ixml_reader.py +++ b/wavinfo/wave_ixml_reader.py @@ -1,4 +1,5 @@ -import xml.etree.ElementTree as ET +#import xml.etree.ElementTree as ET +from lxml import etree as ET import io class WavIXMLFormat: @@ -13,10 +14,13 @@ class WavIXMLFormat: self.source = xml xmlBytes = io.BytesIO(xml) try: - self.parsed = ET.parse(xmlBytes) + parser = ET.XMLParser(recover=True) + self.parsed = ET.parse(xmlBytes, parser=parser) except ET.ParseError as err: print("Error parsing iXML: " + str(err)) - return None + decoded = xml.decode(encoding='utf_8_sig') + print(decoded) + self.parsed = ET.parse(io.StringIO(decoded)) def _get_text_value(self, xpath): e = self.parsed.find("./" + xpath)