XMLファイルの複数のレコードからデータを抽出するスクリプトを作成してPythonを学習しようとしています。 Web上で検索することでほとんどの質問に対する答えを見つけることができましたが、getElementsByTagName( "タグ名")[0]の前にXMLタグにデータが含まれていないかどうかを判断する方法が見つかりませんでした。 .dataメソッドが使用され、データが存在しないときにAttributeErrorがスローされます。私は試して私のコードを書くことができ、AttributeErrorを処理することができますが、私は例外を処理する必要がないデータを抽出しようとする前に、タグが空であることを知りたいと思います。 タグ内にデータを持ち、タグが空の2つのレコードを含むXMLファイルの例を次に示します。ここでPython 3.6を使用したXMLの解析XMLタグにデータが含まれていないかどうかを確認するには
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<records>
<rec>
<name>ZYSRQPO</name>
<state>Washington</state>
<country>United States</country>
</rec>
<rec>
<name>ZYXWVUT</name>
<state></state>
<country>Mexico</country>
</rec>
</records>
は、私がデータを抽出するために使用する可能性のあるコードのサンプルです:このファイルを処理するとき
from xml.dom import minidom
import sys
mydoc = minidom.parse('mydataFile.xml')
records = mydoc.getElementsByTagName("rec")
for rec in records:
try:
name = rec.getElementsByTagName("name")[0].firstChild.data
state = rec.getElementsByTagName("state")[0].firstChild.data
country = rec.getElementsByTagName("country")[0].firstChild.data
print('{}\t{}\t{}'.format(name, state, country))
except (AttributeError):
print('AttributeError encountered in record {}'.format(name), file=sys.stderr)
continue
ZYXWVUTという名前の記録のための情報は、例外が発生したことを除いて印刷されません。私は、使用された州名とこのレコードについて印刷された残りの情報にヌル値を持たせたいと思っています。 if文を使用してgetElementsByTagNameを使用する前にタグにデータが含まれていないかどうかを判断し、データが見つからないときにエラーが発生するように、私が望むことを行うために使用できるメソッドはありますか?
は、私はあなたの応答に感謝、ありがとうございます。私は特に2番目の提案が好きですが、名前や国が空になる可能性はほとんどありませんが、よりエレガントな構造を探すためにはほとんどチャンスはありません。私は今どこにいても私は今あるべきだから、私はこれを試していないが、できるだけ早く試してみるだろう。 – JCB