import lxml.etree
「lxml.etree」は、XML形式のデータをPythonで手軽に扱えるようにするためのライブラリです。XML形式のデータがカンタンに扱えるさまざまな機能を備えています。
私は、jQueryと同等の機能を提供する「PyQuery」というライブラリを使うのに必要だったので入れました。
以下、etreeの基礎的な使い方を見ていきます。
01 インスタンスの作成
etreeの基本となるのは「Element」と呼ばれるクラスです。from lxml import etree root = etree.Element("root") print type(root).__name__ # _Elementと表示 print root.tagElement()に文字列を渡せば、その名前のElementインスタンスを作ることができます。
その要素のタグには、「tag」というアトリビュートでアクセスできます。
02 子要素の追加
child1 = etree.SubElement(root, "child1") root.append(etree.Element("child2")) root.insert(0, etree.Element("child3")) print etree.tostring(root, pretty_print=True) # 次のとおり表示 # <root> # <child3/> # <child1/> # <child2/> # </root>子要素を追加するには、SubElement()、append()、insert()といったメソッドを使います。SubElementはインスタンス生成時に親を特定して作るもので、append()とinsert()は、親要素のメソッドとして呼び出し、子要素を引数に受け取るカタチで使います。
append()とinsert()は、list型のメソッドと同じ使い方で使うことができます。
特定の要素を子要素も含めて整形して表示するには、etree.tostring()を使います。
03 テキストとコメント要素
child4 = etree.SubElement(root, "child4") child4.text = "this is text" root.append(etree.Comment("comment part")) print etree.tostring(root, pretty_print=True) # 次のとおり表示 # <root> # <child3/> # <child1/> # <child2/> # <child4>this is text</child4> # <!--comment part--> # </root>要素内のテキストには、textアトリビュートを使ってアクセスすることができます。また、コメント要素を表すクラスとしてCommentというものがあります。こちらもElementと同じようにほかの要素の子要素とすることができます。
04 子要素へのアクセス
print root[0].tag # print len(root) # 5 print root.index(root[2]) # 2特定の要素の子要素には、インデックスを使ってアクセスすることができます。
children = list(root) for c in children: print c.tag # 次のとおり表示 # child3 # child1 # child2 # childまた、Elementを関数list()に渡すとその子要素のリストを作ることができます。
05 属性値へのアクセス
root.set("hello", "world") root.set("dog", "taro") a = root.attrib print a # {'hello': 'world', 'dog': 'taro'} print a.get("dog") # taro属性値には、set()、get()などを使ってアクセスすることができます。また、属性値のセットを辞書として取得するにはattribアトリビュートを使います。
06 要素間の移動
print root[1].getnext().tag # child2 print root[1].getprevious().tag # child3 print root == root[1].getparent() # True要素間の移動をするためのメソッドとしては、getnext()、getprevious()、getparent()などが用意されています。
以上です。
インストール
ソースからインストールする場合は、pipやGithubでインストールするようです。
私は主にWindowsで使っているのですが、Windowsの場合はコンパイラの設定などがややこしいので、有志で作られているインストーラを使いました。Windowsはこちらが手早いかと思います。
lxml 2.3 - PyPI
lxml - Unofficial Windows Binaries for Python Extension Packages
etreeのほかにも、lxmlにはさまざまな便利なサブモジュールがあるようですので、詳しくは公式ドキュメントをごらんください。
参考
lxml - XML and HTML with Python
lxml - PyPI
lxml 2.3 - PyPI
lxml - Unofficial Windows Binaries for Python Extension Packages
0 件のコメント:
コメントを投稿