中身のないDIVタグをそのまま出力させたい

55 views
Skip to first unread message

ひろ

unread,
Apr 8, 2014, 1:50:31 AM4/8/14
to mixe...@googlegroups.com
お世話になります。

中身のないDIVタグをそのまま出力させたいのですがどうしたら良いでしょうか?
<div id="confirm"></div>のようなタグを書くとMixer2で<div id="confirm" />に変換されます。
これを元の<div id="confirm"></div>のまま出力させたいのです。
CSSに問題があるのかも知れませんが<div id="confirm" />のようなタグだと画面が崩れてしまって都合が悪いのです。
<div id="confirm">と</div>の間に半角の空白を入れると<div id="confirm" />にはならないのですが、エディターでソースのフォーマットを行うと<div id="confirm"></div>のように空白が除去されてしまい、毎回手入力で空白を入れる作業が必要で面倒です。

Mixer2のバージョンは1.2.22です。

よろしくお願いします。


nabedge

unread,
Apr 8, 2014, 8:41:28 AM4/8/14
to mixe...@googlegroups.com
渡辺です。

> 中身のない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行ですむ、みたいな。

ひろ

unread,
Apr 9, 2014, 12:14:05 AM4/9/14
to mixe...@googlegroups.com
ひろです。
ご回答ありがとうございます。
方法2でうまくいきました。
Reply all
Reply to author
Forward
0 new messages