今回は 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 件のコメント:
コメントを投稿