/ / XMLを要素ツリーで解析する - python、xml、suds

要素ツリーによるXMLの解析 - python、xml、suds

私はElementTreeでXMLを解析しようとしていますが、このエラーが発生します:

xml.etree.ElementTree.ParseError: encoding specified in XML declaration is incorrect

私のfile.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!

私は文字列天気から私のXMLを解析しようとするとき。誰もこの種の問題を解決する方法を知っていますか?

回答:

回答№1の場合は3

weather 応答は ない 文字列:

>>> type(weather)
<class "suds.sax.text.Text">

ElementTreeはそれをテキストに変換します。要求されたエンコーディングはUTF16です:

>>> weather.splitlines()[0]
"<?xml version="1.0" encoding="utf-16"?>"

この応答をテキストに変換するには、UTF-16に明示的にエンコードします。

>>> weather = weather.encode("utf16")
>>> parseWeather = ET.fromstring(weather)

回答№2の場合は0

あなたがファイルのエンコーディングを確実にすることはできませんが 〜すべき 私はxmlエンコーディング宣言をutf-8に変更しようとしましたが、ElementTreeはそれを解析できました。

weather = client.service.GetWeather("Sao Paulo", "Brazil")
weather = weather.replace("encoding="utf-16"?", "encoding="utf-8"?")