pythonでElement Treeを介してXMLファイルを解析し、コンテンツをcppファイルに書き込みます。
子タグのコンテンツは、タグごとに異なります。たとえば、最初のイベントタグには子としてパーティータグがありますが、2番目のイベントタグにはありません。
->解析前にタグが存在するかどうかを確認するにはどうすればよいですか?
->子供は、1番目のイベントタグにはvalue属性がありますが、2番目にはありません。値を取得する前に、属性が存在するかどうかを確認するにはどうすればよいですか。
->現在、私のコードは、存在しないパーティタグに対してエラーをスローし、2番目の子タグに「なし」属性値を設定します。
<main>
<event>
<party>Big</party>
<children type="me" value="3"/>
</event>
<event>
<children type="me"/>
</event>
</main>
コード:
import xml.etree.ElementTree as ET
tree = ET.parse('party.xml')
root = tree.getroot()
for event in root.findall('event'):
parties = event.find('party').text
children = event.get('value')
タグを確認してから、その値を取得します。
タグが存在しない場合、.find()
は実際にNone
を返します。その値をテストするだけです:
_for event in root.findall('event'):
party = event.find('party')
if party is None:
continue
parties = party.text
children = event.get('value')
_
イベントで.get()
を使用して、value
属性をテストします。属性が存在しない場合もNone
を返します。
属性は_.attrib
_辞書に保存されるため、標準のPythonテクニックを使用して属性を明示的にテストすることもできます。
_if 'value' in event.attrib:
# value attribute is present.
_