JOOXで要素をwrapする。
過去記事で、jooxを取り上げたました。これを案件で補助ツールとして使っています。一律にxmlを補正したい時や、xmlの記述がプロジェクトのルールに従っているかをチェックするためにつかっています。
JavaでjQueryライクにXMLを操作する - IT練習ノート
ただ、jQueryにあるwrap相当のものがありません。もちろん、完全に無いわけではありません。
Match tags = $(document).find("body"); tags.wrap("aaaa"); // OK
というような、タグをwrapすることはできます。しかし、属性があるタグをwrapするインターフェースがありません。次のコードは実行時エラーになります。
tags.wrap("<aaaa/>"); // NG tags.wrap("<aaaa id='abc'/>"); // NG
Matchインターフェースを実装したImplクラスを拡張もしたかったのですが、実装が正しく隠蔽化されているので、拡張する余地がないようい思えました。
仕方がないので、簡易メソッドを作成しました。
コードを示します。
嵌った点としては、異なる要素は直接追加できないことでした。
xml - Java: how to wrap all elements with <sometag> in org.w3c.dom? - Stack Overflow