GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Document-Object-Model.html ・ emacs-doc.conao3.com

33.30.1 ドキュメントオブジェクトモデル

libxml-parse-html-region(およびその他のXMLパース関数)によって返されるDOMは、各ノードがノード名(タグと呼ばれる)と、任意のキー/値の属性リスト、および子ノードのリストを持つツリー構造となっています。子ノードは、文字列またはDOMオブジェクトのいずれかです。

(body ((width . "101"))
 (div ((class . "thing"))
  "Foo"
  (div nil
   "Yes")))
関数: dom-node tag &optional attributes &rest children

この関数は、タイプ tag の DOM ノードを作成します。attributes が指定された場合は、キーと値のペアのリストである必要があります。children が指定された場合は、DOM ノードである必要があります。

この構造を扱うには、以下の関数を使用できます。各関数は、DOMノード、またはノードのリストを引数に取ります。後者の場合、リスト内の最初のノードのみが使用されます。

シンプルなアクセサ:

dom-tag node

ノードのタグ(「ノード名」とも呼ばれます)を返します。

dom-attr node attribute

ノード内の attribute の値を返します。一般的な使い方は以下の通りです:

(dom-attr img 'href)
=> "https://fsf.org/logo.png"
dom-children node

ノードのすべての子を返す。

dom-non-text-children node

ノードの文字列以外の子要素をすべて返す。

dom-attributes node

ノードの属性のキー/値ペアのリストを返します。

dom-inner-text node

ノードのすべてのテキスト要素と、そのすべての子ノードのテキスト要素を、再帰的に連結した文字列として返します。

dom-parent dom node

node の親を dom に返す。

dom-remove dom node

domからnodeを削除する。

以下は、DOM を変更するための関数です。

dom-set-attribute node attribute value

ノードのattributeをvalueに設定する。

dom-remove-attribute node attribute

nodeからattributeを削除する。

dom-append-child node child

nodeの最後の子としてchildを追記する。

dom-add-child-before node child before

beforeノードの前に、nodeの子リストにchildを追加してください。beforeがnilである場合は、childを最初の子にしてください。

dom-set-attributes node attributes

ノードのすべての属性を新しいキー/値のリストに置き換える。

以下は、DOM 内の要素を検索するための関数です。いずれも、一致するノードのリストを返します。

dom-by-tag dom tag

dom 内のノードのうち、型が tag であるものをすべて返します。典型的な使用例は以下の通りです:

(dom-by-tag dom 'td)
=> '((td ...) (td ...) (td ...))
dom-by-class dom match

dom 内のノードのうち、正規表現である match に一致するクラス名を持つものをすべて返す。

dom-by-style dom style

dom 内のノードのうち、正規表現である match に一致するスタイルを持つものをすべて返す。

dom-by-id dom style

dom 内のノードのうち、正規表現である match に一致する ID を持つものをすべて返す。

dom-search dom predicate

predicate が nil 以外の値を返す dom 内のすべてのノードを返します。predicate には、テスト対象のノードが引数として渡されます。

dom-strings dom

dom内のすべての文字列を返す。

ユーティリティ関数:

dom-pp dom &optional remove-empty

ポイント位置の dom を整形して出力する。remove-empty の場合は、空白文字のみを含むテキストノードは出力しない。

dom-print dom &optional pretty xml

ポイントに dom を出力する。xml が nil でない場合は、XML として出力し、そうでない場合は HTML として出力する。pretty が nil でない場合は、HTML/XML を論理的にインデントする。