xmlタグを検索するのに便利なiter()。しかし安易に複数検索しようとするとエラーになります。結論から書きます
成功例
(サンプル)test.xml
<?xml version="1.0" encoding="UTF-8" ?>
<TaggedPDF-doc>
<Sect>
<P>野球</P>
<P>サッカー</P>
<P>バレーボール</P>
</Sect>
<Sect>
<L>韓国</L>
<L>日本</L>
<L>中国</L>
</Sect>
</TaggedPDF-doc>
上の”P”タグと”L”タグを抽出することが目的のコードを作成します。
成功したコード
import xml.etree.ElementTree as ET
html_parser='lxml'
#xmlデータの読み込み関数の設定
def xml_read():
tree = ET.parse('test.xml')
root = tree.getroot()
extraction = ""
for child in root.iter("P" or "L"):
if child.tag in ("P","L"):
print(child.text)
#関数の動作
try:
xml_read()
except KeyboardInterrupt:
pass
出力結果
野球 サッカー バレーボール 韓国 日本 中国
失敗例
失敗したコード1(”P”タグのみ抽出)
import xml.etree.ElementTree as ET
html_parser='lxml'
#xmlデータの読み込み関数の設定
def xml_read():
tree = ET.parse('test.xml')
root = tree.getroot()
for child in root.iter("P" or "L"):
print(child.text)
#関数の動作
try:
xml_read()
except KeyboardInterrupt:
pass
出力結果1
野球
サッカー
バレーボール
iter()内の”P”タグのみが選ばれて”L”タグは選ばれてません。もし”P”タグと”L”タグを入れ替えると出力結果は”L”タグのみが選ばれて表示されます。
失敗したコード2(”L”タグのみ抽出 )
import xml.etree.ElementTree as ET
html_parser='lxml'
#xmlデータの読み込み関数の設定
def xml_read():
tree = ET.parse('test.xml')
root = tree.getroot()
for child in root.iter("L" or "P"):
print(child.text)
#関数の動作
try:
xml_read()
except KeyboardInterrupt:
pass
出力結果2
韓国
日本
中国
コメント