Merge pull request #17 from GRiker/master

Improved error handling in iDevice xml parsing
This commit is contained in:
Kovid Goyal 2013-06-22 11:42:55 -07:00
commit c785607ca1

View File

@ -192,8 +192,10 @@ class XmlPropertyListParser(object):
pattern = XmlPropertyListParser.DATETIME_PATTERN pattern = XmlPropertyListParser.DATETIME_PATTERN
match = pattern.match(content) match = pattern.match(content)
if not match: if not match:
raise PropertyListParseError("Failed to parse datetime '%s'" % content) print("XmlPropertyListParser() ERROR: error parsing %s as datetime" % repr(content))
#raise PropertyListParseError("Failed to parse datetime '%s'" % content)
d = datetime.datetime.today()
else:
groups, components = match.groupdict(), [] groups, components = match.groupdict(), []
for key in units: for key in units:
value = groups[key] value = groups[key]
@ -204,10 +206,16 @@ class XmlPropertyListParser(object):
components.append(1) components.append(1)
d = datetime.datetime(*components) d = datetime.datetime(*components)
self._push_value(d) self._push_value(d)
def _parse_real(self, name, content): def _parse_real(self, name, content):
content = content.replace(',', '.')
try:
self._push_value(float(content)) self._push_value(float(content))
except:
print("XmlPropertyListParser() WARNING: error converting %s to float" % repr(content))
self._push_value(0.0)
def _parse_integer(self, name, content): def _parse_integer(self, name, content):
self._push_value(int(content)) self._push_value(int(content))