tkxml プログラム仕様

tkxml.py

概要: XMLデータの解析、変換、操作を支援するユーティリティ機能を提供します。

詳細説明: このモジュールは、Pythonの標準ライブラリであるxml.etree.ElementTreeやxml.dom.minidomに加え、 外部ライブラリのxmltodict、dicttoxml、numpyを利用して、XMLファイルとPythonの辞書構造間の 相互変換、XML要素の再帰的な解析、特定のセクション情報の抽出、整形されたXMLの書き出しなど、 XML操作に関する幅広い機能を提供します。 ATLAS最適化XMLやVASP計算結果XML (vasprun.xml) などの特定フォーマットのXML解析例も含まれています。

関連リンク: tkxml.py ライブラリ技術ドキュメント (もし関連ドキュメントがあれば)

tklib.tkxml.dict2xml(d, attr_type=True, root=True)[ソース]

概要: 辞書をXMLインスタンスに変換します。

詳細説明: dicttoxmlライブラリを使用して、入力されたPythonの辞書をXMLインスタンスに変換します。

パラメータ:
  • d -- 変換する辞書。

  • attr_type -- (オプション) 辞書のキーをXMLタグの属性として扱うかどうか。デフォルトはTrue。

  • root -- (オプション) 生成されるXMLにルート要素を含めるかどうか。デフォルトはTrue。

戻り値:

変換されたXMLインスタンス (bytes)。

tklib.tkxml.file2dict(infile)[ソース]

概要: 指定されたファイルパスのXMLファイルを読み込み、辞書に変換します。

詳細説明: 指定されたパスからXMLファイルを読み込み、その内容をxml2dict関数を使って辞書形式に変換します。

パラメータ:

infile -- 読み込むXMLファイルのパス。

戻り値:

変換された辞書。

tklib.tkxml.get_attrib(element)[ソース]

概要: XML要素のタグ、テキスト、および属性を取得します。

パラメータ:

element -- 処理対象のxml.etree.ElementTree.Elementオブジェクト。

戻り値:

要素のタグ (str)、テキスト内容 (str)、属性の辞書 (dict)。

tklib.tkxml.get_elements_recursive(element)[ソース]

概要: XML要素の子要素の情報を再帰的に取得します。

詳細説明: 入力されたXML要素が子要素を持たない場合、その要素のテキスト内容を返します。 子要素を持つ場合、各子要素のタグ、テキスト、属性を抽出し、さらにその子要素に対して 再帰的にこの関数を呼び出して情報を収集します。 収集された情報は、辞書のリストとして返されます。

パラメータ:

element -- 処理対象のxml.etree.ElementTree.Elementオブジェクト。

戻り値:

子要素がない場合は要素のテキスト (str)、 子要素がある場合は子要素情報のリスト (list[dict])。

tklib.tkxml.get_root(xml)[ソース]

概要: XMLソースからルート要素を取得します。

詳細説明: 入力がファイルパスの場合はファイルを解析し、XML文字列の場合は文字列から解析して xml.etree.ElementTree.Element型のルート要素を返します。

パラメータ:

xml -- XMLファイルのパス (str) またはXML文字列 (str)。

戻り値:

xml.etree.ElementTree.Element型のXMLルート要素。

tklib.tkxml.get_section_inf(parent, sections=None, inf=None, params=None, ret_type='list', add_parent_params=True)[ソース]

概要: 指定されたセクションパスに沿ってXML要素の情報を取得します。

詳細説明: `parent`要素から`sections`リストで指定されたパスを辿り、最後のセクションの子要素の情報を取得します。 `ret_type`が'list'の場合はリストで、'dict'の場合は辞書で情報を返します。 途中の親要素の属性も`params_child`として収集され、`add_parent_params`がTrueの場合、 最終的な戻り値に含められます。

パラメータ:
  • parent -- 検索を開始するxml.etree.ElementTree.Elementオブジェクト。

  • sections -- (オプション) 検索する子要素のタグ名のリスト。デフォルトはNone。

  • inf -- (オプション) 情報を追加する既存のリストまたは辞書。関数内でコピーして使用します。デフォルトはNone。

  • params -- (オプション) 親要素から引き継がれるパラメータの辞書。デフォルトはNone。

  • ret_type -- (オプション) 戻り値の型 ('list'または'dict')。デフォルトは'list'。

  • add_parent_params -- (オプション) 親のパラメータを戻り値に含めるかどうか。デフォルトはTrue。

戻り値:

子要素のタグ、テキスト、属性、または子要素の属性情報を含む辞書/リスト。

tklib.tkxml.get_section_inf_all(parent, sections=None, section_parent='root', inf=None, level=0, params=None, pkey=None, ret_type='list', last_node_only=True)[ソース]

概要: 指定されたセクションパスに沿ってXML要素の情報を再帰的に取得します。

詳細説明: `parent`要素から`sections`リストで指定されたパスを辿り、各階層の子要素の情報を取得します。 `last_node_only`がFalseの場合、中間ノードの情報も収集します。 `ret_type`が'list'の場合はリストで、'dict'の場合は辞書で情報を返します。 親要素の属性は`params_child`として引き継がれ、各ノードの情報に含まれます。

パラメータ:
  • parent -- 検索を開始するxml.etree.ElementTree.Elementオブジェクト。

  • sections -- (オプション) 検索する子要素のタグ名のリスト。デフォルトはNone。

  • section_parent -- (オプション) 現在の`parent`要素のタグ名(ユニークキー生成用)。デフォルトは'root'。

  • inf -- (オプション) 情報を追加する既存のリストまたは辞書。デフォルトはNone。

  • level -- (オプション) 現在の再帰レベル。デフォルトは0。

  • params -- (オプション) 親要素から引き継がれるパラメータの辞書。デフォルトはNone。

  • pkey -- (オプション) `ret_type`が'dict'の場合にキーとして使用する属性名。デフォルトはNone。

  • ret_type -- (オプション) 戻り値の型 ('list'または'dict')。デフォルトは'list'。

  • last_node_only -- (オプション) 最後のセクションのノードのみを収集するか、すべてのノードを収集するか。デフォルトはTrue。

戻り値:

子要素のタグ、テキスト、属性、および親要素のパラメータを含む辞書/リスト。

tklib.tkxml.get_unique_key(d, section, val=None)[ソース]

概要: 辞書内でユニークなキー名を生成します。

詳細説明: 指定された`section`と`val`に基づいてキーを生成し、辞書`d`にそのキーが存在しない場合は そのまま返します。既に存在する場合は、`section[i]:val`または`section[i]`の形式で インデックスを付加し、ユニークなキーが見つかるまで試行します。

パラメータ:
  • d -- キーの存在を確認する辞書。

  • section -- キーの基本となるセクション名。

  • val -- (オプション) セクションに付加する値。デフォルトはNone。

戻り値:

辞書内でユニークなキー文字列。

tklib.tkxml.main()[ソース]

概要: スクリプトのメイン実行関数です。

詳細説明: コマンドライン引数から入力ファイルを読み込み、そのXML構造に基づいて ATLAS最適化XMLまたはVASP計算結果XML(vasprun.xml)を解析し、 関連情報を標準出力に出力します。

Param:

なし

戻り値:

None

tklib.tkxml.to_xml(outfile, element, encoding='utf-8', newl='', indent='', addindent='    ', xml_declaration=True, use_minidom=False)[ソース]

概要: XML要素をファイルに書き出します。

詳細説明: `use_minidom`がTrueの場合、`xml.dom.minidom`を使用してXMLを整形(インデントと改行を追加)して ファイルに書き出します。それ以外の場合は、`xml.etree.ElementTree`を使用して直接書き出します。

パラメータ:
  • outfile -- 書き込み先のファイルパス。

  • element -- 書き出すルートのxml.etree.ElementTree.Elementオブジェクト。

  • encoding -- (オプション) 出力ファイルのエンコーディング。デフォルトは'utf-8'。

  • newl -- (オプション) `use_minidom`がTrueの場合の改行文字。デフォルトは''。

  • indent -- (オプション) `use_minidom`がTrueの場合のインデント文字列。デフォルトは''。

  • addindent -- (オプション) `use_minidom`がTrueの場合の追加インデント文字列。デフォルトは' '。

  • xml_declaration -- (オプション) XML宣言 (<?xml version="...">) を含めるかどうか。デフォルトはTrue。

  • use_minidom -- (オプション) `xml.dom.minidom`を使用してXMLを整形するかどうか。デフォルトはFalse。

戻り値:

None

tklib.tkxml.xml2dict(xml)[ソース]

概要: XML文字列またはElementTree要素を辞書に変換します。

詳細説明: xmltodictライブラリを使用して、入力されたXMLデータをPythonの辞書構造に変換します。

パラメータ:

xml -- 変換するXML文字列。

戻り値:

変換された辞書。