出直し!! ヘルプ

連載中

連載 終了

2025/04/30

DXL Step-by-Step:#56)ノード操作 ⑨ - ノードの削除

今回は DXL ツリーからノードを削除する方法についてまとめます。前回紹介したノードを検索したり、必要なノードを取得する方法で不要なノードを探し出し、削除するという使い方になります。


ノードの削除

ノードを削除するには、 RemoveChild メソッドを使用します。

RemoveChild (NotesDOMNode - LotusScript®)

NotesDOMNode クラスのメソッドですので、それを継承している NotesDOMEmenetNode でも使用できるメソッドとなります。

構文は次の通りで、引数に指定した子ノードを削除するメソッドです。

Set notesDOMNode = notesDOMNode.RemoveChild( child )

ということは、メソッド実行のためには、削除したい子ノードと親ノードが必要となります。親ノードは ParentNode プロパティで取得できますので、次のように記述すると簡単に削除できます。

Call denDel.ParentNode.RemoveChild(denDel)


削除はツリーまるごと!

当たり前かもしれませんが、ノードを削除した場合、配下のノードもまとめて削除されます。例えば、前回紹介した関数を使って2つ目の表を取得して削除すると、列の定義である tablecolumn や行 tablerow、セル tablecell など表とその中身すべてが削除されます。

   'リッチテキスト直下の2つ目のテーブルを取得
   Set denTbl = xGetNthChildByName(denRT, "table", 2)
   '取得したテーブルを削除
   Call denTbl.ParentNode.RemoveChild(denTbl)


 戻り値の状態

最初に紹介した構文にある通り、RemoveChild メソッドには戻り値があり、ヘルプによると削除したノードが返されるそうです。削除したのにどういうこと?と思ってデバッガで確認したところ、ParentNode が存在しないノードになっていました。

これは、ノードを新規作成し AppendChild する前と同じです。DXL のツリー内に存在せず、宙に浮いた状態ということですね。これをどのように活用するのは今一つ見えないですが...


前回 DXL Step-by-Step


0 件のコメント:

コメントを投稿