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,22 +192,30 @@ 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(), []
for key in units:
value = groups[key]
if value is None:
break
components.append(int(value))
while len(components) < 3:
components.append(1)
groups, components = match.groupdict(), [] d = datetime.datetime(*components)
for key in units:
value = groups[key]
if value is None:
break
components.append(int(value))
while len(components) < 3:
components.append(1)
d = datetime.datetime(*components)
self._push_value(d) self._push_value(d)
def _parse_real(self, name, content): def _parse_real(self, name, content):
self._push_value(float(content)) content = content.replace(',', '.')
try:
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))