self.rawOutput = rawOutput
def parseMethodResponse(self, mr):
- tree = etree.fromstring(str(mr))
+ mr = str(mr) # PyQT supplies a QByteArray; make it a string
response = {"kind": "unknown"}
+ try:
+ tree = etree.fromstring(mr)
+ except etree.XMLSyntaxError, e:
+ print "failed to parse XML response", str(e)
+ #file("badparse.xml","w").write(mr)
+ return response
+
if tree.tag != "methodResponse" or (len(list(tree))==0):
return response
replies = re.compile(pttrnAns, re.DOTALL).findall(self.rawOutput)
# cleaning
answers = [ x.replace('\\n','\n') for x in answers ]
- replies = [ x.replace('\\n','\n').replace("'\nbody: '", '') for x in replies ]
+ replies = [ x.replace('\\n','\n').replace("'\nbody: '", '').replace("\"\nbody: '", '') for x in replies ]
replies.reverse() # so that I use pop() as popleft
# A well-formed XML document must have one, and only one, top-level element