xmllxmlというライブラリを使ってxmlをパースしたときのメモを記事にしています。lxmlはBeautifulSoupというスクレイピングのライブラリでも使われたりしなかったりします。xmlファイルを取得するpythonでファイルを読み込む方法はいろいろありますが、再帰的にファイルを取得しつつ、指定したディレクトリ以下のxmlファイルをすべて取得します。filesget_xml_filesを実行すると、指定したディレクトリ以下のxmlファイルのパスがすべて取得できます。このパスをlxmlで読み込んで、利用します。lxmlでxmlをパースするget_xml_filesを使って、ファイルまでのパスを取得後にパース処理をします。etree.parse(xml_file_name)xml_fileはPosixPothクラスのインスタンスなので、そのままetree.parseに渡せません。一度strで文字列にしてからparseします。コメントの削除方法xmlのコメントが残っていると、forでループする際にcommentが引っかかります。これを解消するために、removeしようと考えたのですが、remove系の関数がありませんでした。理想ではtree.rm_comments()とかetree.rm_comments()があったらよかったです。いうわけで、対処方法が以下のプログラムです。parent.remove(comment)tagを判定する以下のプログラムは、mybatisというjavaのormで使うxmlをパースする際に使った関数です。xmlの中身はこのようなものです。</select></sqlMap>このxmlをパースしてステートメントごとに配列にしています。statement_elements属性を取得する際はelement.get('id')のようにします。tree.iter()でelementを取得できますが、少し癖があります。深さ優先探索のようにタグを取得していくので、書くのが難しかったです。一度に欲しい情報を取得するのではなく、個別に取得する方法を採用しました。以下のようなxmlがあった場合、sqlをdictに格納して、selectをパースしている最中にincludeを見つけたらdictを参照して、中身を置き換えます。»プロフィールid:miyaji-y26プログラミングに関する記事をメインで書いています。月別アーカイブ最新記事alembicで環境別にマイグレーションファイルを分割するFlaskで共通的なpath変数を検証する方法material-iconsをchrome拡張のcontent-scriptで使用する方法リファクタリングを行うタイミングについて属性付きセレクタを作成する関数を作った。はてなブログをはじめよう!miyaji-y26さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。