1

XML ファイルを検索しようとしています。する必要がある

  • 「localteam」の名前がクエリと一致するかどうかを確認します (例: 「チーム A」)
  • 一致が見つかった場合は、「awayteam」の名前が 2 番目の条件 (「チーム B」など) と一致することを確認します。その要素は、同じ要素内の「localteam」の下にあります。
  • 「awayteam」がクエリに一致する場合、(「match」で) 親の ID を取得し、検索を終了します。

私は localteam 要素に到達できますが、アウェイチームを検索し、ID を取得するためにレベルを「上げる」方法がわかりません... child.iter() と child.find( を使用してみました「awayteam」)、どちらも機能していません..

これまでのところ、私は..

for child in root.iter('localteam'):
    gs_name = child.get('name')
    if gs_name == 'Team A':
        print child.tag, child.attrib
        for step_child in child.iter():
            print step_child.tag, step_child.attrib
            gs_name = child.get('name')

XML

<scores sport="sports">
  <category name="NAME" id="1419" file_group="USA">
      <match date="21.07.2013" time="04:00" status="Finished" id="56456456">
         <localteam name="Team A" />
         <random name="yyy" />
         <awayteam name="Team B" />
         <random name="xxx" />
</match>
4

1 に答える 1

2

match代わりに要素を検索します。

for match in root.iter("match"):
    if (match.find("localteam").get("name") == "Team A" and
        match.find("awayteam").get("name") == "Team B"):
        print match.get("id")
        break

find呼び出しで何も見つからない場合、上記は AttributeErrors を発生させるため、追加のチェックまたはエラー処理を追加することをお勧めします。例えば

for match in root.iter("match"):
    localteam = match.find("localteam")
    awayteam = match.find("awayteam")
    if localteam is not None and awayteam is not None and ...
于 2013-07-21T21:38:25.127 に答える