Ich versuche, XML mit ElementTree zu analysieren, erhalte aber folgende Fehlermeldung:
xml.etree.ElementTree.ParseError: encoding specified in XML declaration is incorrect
Meine Datei.py:
from suds.client import Client
import xml.etree.ElementTree as ET
url = "http://www.webservicex.com/globalweather.asmx?WSDL"
client = Client(url)
weather = client.service.GetWeather("Sao Paulo", "Brazil")
print weather
parseWeather = ET.fromstring(weather) # >>>> Here I got my problem!
Wenn ich versuche, mein xml vom String-Wetter zu analysieren. Weiß jemand, wie man dieses Problem löst?
Antworten:
3 für die Antwort № 1Das weather
Antwort ist nicht ein Faden:
>>> type(weather)
<class "suds.sax.text.Text">
aber ElementTree wird es in Text umwandeln. Die beanspruchte Kodierung ist jedoch UTF16:
>>> weather.splitlines()[0]
"<?xml version="1.0" encoding="utf-16"?>"
Wandeln Sie diese Antwort in Text um, indem Sie sie explizit in UTF-16 codieren:
>>> weather = weather.encode("utf16")
>>> parseWeather = ET.fromstring(weather)
0 für die Antwort № 2
Sie können sich zwar nicht sicher sein, wie eine Datei kodiert wird sollte Ich habe versucht, die XML-Kodierungsdeklaration in utf-8 zu ändern, und ElementTree konnte es analysieren.
weather = client.service.GetWeather("Sao Paulo", "Brazil")
weather = weather.replace("encoding="utf-16"?", "encoding="utf-8"?")