libxml-parse-html-region
(およびその他のXMLパース関数)がリターンするDOMはツリー構造です。このツリー構造ではそれぞれのノードがノード名(タグ(tag)と呼ばれる)をもち、オプションでkey/value値からなる属性(attribute)リスト、その後に子ノード(child
nodes)が続きます。子ノードは文字列かDOMオブジェクトのいずれかです。
(body ((width . "101")) (div ((class . "thing")) "Foo" (div nil "Yes")))
この関数はタイプtagのDOMノードを作成する。もしattributesが与えられたら、それはkey/valueペアのリストであること。もしchildrenが与えられたら、それはDOMノードであること。
この構造を処理するために以下の関数を使用できます。それぞれの関数はDOMノードかノードのリストを受け取ります。後者の場合には、そのリストの最初のノードだけが使用されます。
シンプルなアクセサー
dom-tag nodeノードのタグ (“ノード名”とも呼ばれる)をリターンする。
dom-attr node attributeノードの属性の値をリターンする。以下は一般的な使用例:
(dom-attr img 'href) => "https://fsf.org/logo.png"
dom-children nodeノードのすべての子をリターンする。
dom-non-text-children nodeノードのすべての非文字列の子をリターンする。
dom-attributes nodeノードの属性のkey/valueペアのリストをリターンする。
dom-text nodeノードのすべてのテキスト的な要素を連結された文字列としてリターンする。
dom-texts nodeノードのすべてのテキスト的な要素、およびノードのすべての子のテキスト的な要素を、連結された文字列として再帰的にリターンする。この関数はテキスト的な要素の間に挿入するオプションのセパレーターも受け取る。
dom-parent dom nodedom内でのnodeの親をリターンする。
dom-remove dom nodedomからnodeを削除する。
以下はDOMを変更するための関数です。
dom-set-attribute node attribute valueノードのattributeにvalueをセットする。
dom-remove-attribute node attributenodeからattributeを削除する。
dom-append-child node childnodeの最後の子としてchildを追加する。
dom-add-child-before node child beforenodeの子リストのノードbeforeの前にchildを追加する。beforeがnilなら、childが最初の子になる。
dom-set-attributes node attributesノードのすべての属性を新たなkey/valueリストに置き換える。
以下はDOM内の要素を検索する関数です。これらはマッチしたノードのリストをリターンします。
dom-by-tag dom tagdom内のタイプがtagのすべてのノードをリターンする。典型的な使用例は:
(dom-by-tag dom 'td) => '((td ...) (td ...) (td ...))
dom-by-class dom matchdom内のクラス名が正規表現matchにマッチするすべてのノードをリターンする。
dom-by-style dom styledom内のスタイルが正規表現matchにマッチするすべてのノードをリターンする。
dom-by-id dom styledom内のIDが正規表現matchにマッチするすべてのノードをリターンする。
dom-search dom predicatepredicateが非nil値をリターンしたdom内のすべてのノードをリターンする。predicateはテストされるノードをパラメーターとして呼び出される。
dom-strings domdom内のすべての文字列をリターンする。
ユーティリティ関数:
dom-pp dom &optional remove-emptyポイント位置のdomにたいしてプリティプリント(pp: 優雅なプリント)を行う。remove-emptyなら空白文字だけを含むテキスト的ノードはプリントしない。
dom-print dom &optional pretty xmlポイント位置のdomをプリントする。xmlが非nilならXML、それ以外ならHTMLとしてプリントする。prettyが非nilなら、HTML/XMLを論理的にプリントする。