私は初心者で、Python スクリプトを 1 週間書いた経験があります。
タグの事前知識がなくても、入力 XML を解析する汎用パーサー (将来のすべてのジョブのライブラリ) を作成しようとしています。
- 入力 XML を解析します。
- XML から値を取得し、タグに基づいて値を設定します。
- これらの値を残りのジョブで使用します。
「xml.etree.ElementTree」ライブラリを使用しており、以下の方法で XML を解析できます。
#!/usr/bin/python
import os
import xml.etree.ElementTree as etree
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.info('start reading XML property file')
filename = "mood_ib_history_parameters_DEV.xml"
logger.info('getting the current location')
__currentlocation__ = os.getcwd()
__fullpath__ = os.path.join(__currentlocation__,filename)
logger.info('start parsing the XML property file')
tree = etree.parse(__fullpath__)
root = tree.getroot()
hive_db = root.find("hive_db").text
EDGE_HIVE_CONN = root.find("EDGE_HIVE_CONN").text
target_dir = root.find("target_dir").text
to_email_alias = root.find("to_email_alias").text
to_email_cc = root.find("to_email_cc").text
from_email_alias = root.find("from_email_alias").text
dburl = root.find("dburl").text
SQOOP_EDGE_CONN = root.find("SQOOP_EDGE_CONN").text
user_name = root.find("user_name").text
password = root.find("password").text
IB_log_table = root.find("IB_log_table").text
SR_DG_master_table = root.find("SR_DG_master_table").text
SR_DG_table = root.find("SR_DG_table").text
logger.info('Hive DB %s', hive_db)
logger.info('Hive DB %s', hive_db)
logger.info('Edge Hive Connection %s', EDGE_HIVE_CONN)
logger.info('Target Directory %s', target_dir)
logger.info('To Email address %s', to_email_alias)
logger.info('CC Email address %s', to_email_cc)
logger.info('From Email address %s', from_email_alias)
logger.info('DB URL %s',dburl)
logger.info('Sqoop Edge node connection %s',SQOOP_EDGE_CONN)
logger.info('Log table name %s',IB_log_table)
logger.info('Master table name %s',SR_DG_master_table)
logger.info('Data governance table name %s',SR_DG_table)
問題は、タグや要素の知識がなくても XML を解析し、その値をどのように使用するかです。複数のチュートリアルを実行しましたが、それらはすべて、以下のようなタグを使用して XML を解析するのに役立ちます
SQOOP_EDGE_CONN = root.find("SQOOP_EDGE_CONN").text
XMLを動的に解析するための適切なチュートリアル、ライブラリ、またはコードスニペットを誰かに教えてもらえますか。