/ / Parsen von XML mit Elementbaum - Python, XML, Suds

Parsen von XML mit Elementbaum - Python, XML, Suds

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 № 1

Das 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"?")