PythonでShift_JISのXMLをパースする

こういう感じのShift_JISでエンコーディングされたXMLファイルを
<?xml version="1.0" encoding="Shift_JIS" ?>
<レシピ 名前="パン" 準備時間="5分" 調理時間="3時間">
  <料理>基本的なパン</料理>
  <材料 量='3' 単位='カップ'>小麦粉</材料>
  <材料 量='0.25' 単位='オンス'>イースト</材料>
  <材料 量='1.5' 単位='カップ' 状態="温かい">水</材料>
  <材料 量="1" 単位="ティースプーン">食塩</材料>
  <要領>
    <手順>全ての材料を一緒にして混ぜます。</手順>
    <手順>十分にこねます。</手順>
    <手順>布で覆い、暖かい部屋で1時間そのままにしておきます。</手順>
    <手順>もう一度こねます。</手順>
    <手順>パン焼きの容器に入れます</手順>
    <手順>布で覆い、暖かい部屋で1時間そのままにしておきます。</手順>
    <手順>オーブンに入れて温度を180℃にして30分間焼きます。</手順>
  </要領>
</レシピ>
ElementTreeを使ってパースしようとすると、、、
import xml.etree.ElementTree as ET

tree = ET.parse("sjis.xml")
root = tree.getroot()

print(root.get("名前"))
print(root.findall("./要領/手順")[3].text)
$ python sjis_xml_parse.py
...
ValueError: multi-byte encodings are not supported
マルチバイトはサポートしてないとのこと…
import xml.etree.ElementTree as ET

with open("sjis.xml", encoding="shift_jis") as file:
    xml = file.read()

root = ET.fromstring(xml)

print(root.get("名前"))
print(root.findall("./要領/手順")[3].text)
ファイルを一旦変数に読み込んでfromstringメソッドで渡すとパースしてくれます!
$ python sjis_xml_parse.py
パン
もう一度こねます。