У меня есть редкая проблема, которую я, кажется, не могу обернуть, это связано с анализом XML с использованием ElementTree в python.
Пробовал поиск подсказок и ответов о похожих проблемах, но безрезультатно
Моя функция:
def errorChecker(xmlResponse):
xmlResponse = str(xmlResponse)
xmlText = xmlParser.fromstring(xmlResponse)
errorText = ""
for xmlData in xmlText.iter():
print xmlData.tag
if xmlData.tag == "fault":
for errorData in xmlText.iter('code'):
#errorText = errorDict[errorData]
return errorData.text
return False
Когда я передаю этот XML-код, он возвращается очень хорошо:
"""<?xml version="1.0" encoding="utf-8"?>
<response>
<fault>
<code>1055</code>
</fault>
</response>"""
Но когда я получаю XML напрямую с сервера и передаю его функции, я получаю эту ошибку:
Traceback (most recent call last):
File "wmsTest.py", line 556, in <module>
errorChecker(str(location))
File "wmsTest.py", line 134, in errorChecker
xmlText = xmlParser.fromstring(str(xmlResponse))
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1311, in XML
parser.feed(text)
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1659, in feed
self._raiseerror(v)
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1523, in _raiseerror
raise err
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 6, column 11
Добавлена информация о моем запросе к серверу:
Я использую запросы для доступа к серверу.Используя:
response = requests.post(appServer, data=xml)
print "raw from server"
print response.text
print "str response"
print str(response.text)
return response.text
ответ:
raw from server
<?xml version="1.0" encoding="utf-8"?>
<response>
<fault>
<code>1055</code>
</fault>
</response>
str response
<?xml version="1.0" encoding="utf-8"?>
<response>
<fault>
<code>1055</code>
</fault>
</response>
Python интерпретирует входящий XML как тип Unicode, он в точности совпадает с приведенным выше ручным XML-кодом, так как это печать.Я только добавляю "" "для начала и конца.
Есть какие-нибудь подсказки?