DOM の操作

Overview

DOM レイヤーは HTML ページを型付きノードのツリーとしてモデル化します。Document はエントリーポイント兼ノードファクトリです。Element と Node は操作と走査 API を担います。


ノードの作成

Document.create_element()、create_text_node()、create_comment()、create_document_fragment() がノードを生成し、append_child() がそれらをアタッチします:

from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
doc.append_child(el)

Attributes

Element.set_attribute()、get_attribute()、has_attribute()、remove_attribute() がマークアップ属性を管理し、Attr と NamedNodeMap がそれらをオブジェクトとして公開します:

from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)

ツリー操作

Node は構造ツールキットを提供します: insert_before()、remove_child()、replace_child()、clone_node()、および contains()、さらに child_nodes、parent_node、first_child アクセサーとサブツリーテキスト用の text_content を含みます。get_root_node() と has_child_nodes() は構造に関する質問に直接答えます。

検索とトラバーサル

Document.get_element_by_id() は ID で要素を取得します。NodeList と HTMLCollection は結果セットを保持します;NodeIterator と TreeWalker(NodeFilter と共に)は文書順でサブツリーを走査します。

変化の観測

MutationObserver はツリーの変更を MutationRecord エントリとして記録し、構造編集に反応する標準的なオブザーバーパターンを鏡のように再現します。


ヒントとベストプラクティス

  • すべてのノードは所有する Document を通して作成してください — ノードはドキュメント単位でスコープされます。Document.import_node() または adopt_node() を使用して、ドキュメント間でノードを移動します。
  • 手動で Text ノードを操作するよりも、全サブツリーのテキストには text_content を使用することを推奨します。
  • 単一のappend_child()の前にノードのバッチを組み立てるには、DocumentFragmentを使用します。
  • 属性が意味を持つ場合、get_attribute()の前にhas_attribute()を確認してください。

一般的な問題

問題原因修正
ノードが誤ったドキュメントに表示されますノードが別のDocumentによって作成されましたまずimport_node()またはadopt_node()で移動してください
属性の検索で何も返されません要素に属性が一度も設定されていませんhas_attribute()でガード
サブツリーのテキストが空です子要素が添付される前に text_content を読み込んでいます子要素を添付してから読み込む

FAQ

どのクラスが新しい要素を作成しますか?

Document — そのcreate_element()メソッドは要素のファクトリであり、テキスト、コメント、フラグメント用の兄弟ファクトリも備えています。

ツリーのサブツリーを2つの文書間で移動するにはどうすればよいですか?

コピーするにはDocument.import_node()を、転送するにはadopt_node()を使用し、次にappend_child()で添付します。

ツリーの変更に対するオブザーバー API はありますか?

はい — MutationObserver は構造および属性の変更を記述した MutationRecord バッチを提供します。


API Reference 概要

クラス/メソッド説明
Document.create_element要素ノードを作成する
Document.get_element_by_idIDで要素を検索する
Element.set_attributeマークアップ属性を設定する
Node.insert_before参照子ノードの前にノードを挿入する
Node.clone_nodeノードまたはサブツリーをコピーする
MutationObserverツリーの変化を監視する
TreeWalkerフィルタ済み文書順トラバーサル

参照

 日本語