I try to parse a soap/xml answer like:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:giftPkgResponse
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://192.168.2.135:8490/gift-ws/services/SRV_GIFT_PKG">
<giftPkgReturn soapenc:arrayType="xsd:string[2]"
xsi:type="soapenc:Array"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<giftPkgReturn> xsi:type="xsd:string">0</giftPkgReturn">
<giftPkgReturn> xsi:type="xsd:string">OK</giftPkgReturn>
xsi:type="xsd:string">
</giftPkgReturn>
</ns1:giftPkgResponse>
</soapenv:Body>
</soapenv:Envelope>
here is my code
---------------------------------------------------------------------------
import xml.etree.ElementTree as ET
import re
def parse(answer):
print"\nANSWER<<", answer
try:
tree = ET.fromstring(answer)
result = {}
for item in tree.getiterator():
if item.tag in ['giftPkgReturn', 'giftPkgReturn']:
result[item.tag] = item.text
print "get<<%s" % result.get('status', None)
resp1 = result.get('giftPkgReturn', None)
resp2 = result.get('giftPkgReturn', None)
if (resp1 == "0" and resp2 == "OK"):
logger.info("Successful")
print "OK:"
return 0
else:
logger.info("Unsuccessful")
return -1
except Exception, Err:
print "\nERROR <<", str(Err)
return -1
----------------------------------------------------------------------------------------
I got the error, i'm no a xml expert but it seems than the answser does not
look like a pure xml. i also tried with lxml instead of xml library but the
result is te same
xml lib
ERROR << not well-formed (invalid token): line 5, column 77
lxml
ERROR << expected '>', line 5, column 37
could you help me to correctly parse the answer please?
regards,
Miguel
--
http://mail.python.org/mailman/listinfo/python-list