渡辺です。
> 中身のないDIVタグをそのまま出力させたいのですがどうしたら良いでしょうか?
> <div id="confirm"></div>のようなタグを書くとMixer2で<div id="confirm" />に変換されます。
> これを元の<div id="confirm"></div>のまま出力させたいのです。
この挙動はMixer2の、というよりはjre同梱のJAXB実装の挙動ですので回避が難しいです。
いくつか回避策をあげるとするとこんな感じでしょうか。
----方法1ここから----
<div id="confirm"><br style="display:none;"/></div>
のようにダミーのタグを入れておいてもらう。display:none なので表示には影響しない。
brじゃなくてhrとか他のタグでもよい。
見えないとはいえ最終的な結果に無駄なタグが残ることが気になるようなら
<style>
.AtodeKuhaku {display:none;}
</style>
<div id="confirm"><br class="AtodeKuhaku"/></div>
にでもしておいて、
saveToString()する直前あたりで
html.getBody().replaceDescendants("AtodeKuhaku", " ")で、該当タグをそれぞれ空白ひとつに一気に置換。
----方法1ここまで----
----方法2ここから----
<div id="confirm"></div> のままにするとして、
saveToString()する直前あたりで
for (Div div : html.getBody().getDescendants(Div.class)) {
if (div.getContent().size() == 0) {
div.getContent().add(" "); // 空白ひとつ追加
}
}
----方法2ここまで----
こんな感じでどうでしょう。
それぞれUtility的なクラスにしておいて、
html型オブジェクトをそれに渡すようにすれば1行ですむ、みたいな。