IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

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