<div id="here"></div>の部分をソースの<div id="here"></div>中に書いてあるコードと置き換えたいと思っているので、
【ひな形】
<div>
aaaaaaaaa
<div id="here"></div>
bbbbbbbb
</div>
【ソース】
<div>
ccccccccccc
<div id="here">
xxx
<a href=hoge>hoge</a>
yyy
:
</div>
dddddddd
</div>
【出力するソース】
<div>
aaaaaaaaa
xxx
<a href=hoge>hoge</a>
yyy
:
bbbbbbbb
</div>
です。
なので、DIVの中に書けるものであればなんでも書かれます。
どういう状況を想定しているかというと、プロジェクトの初期段階で大まかなレイアウトを決めてソースのHTMLを作成していき、あとでひな形にソースの一部だけを埋め込むという状態を想定しています。
ひな形が決まるまで、ソースのHTMLもそこそこ見栄えを近くしておきたいので関係ない部分を適当な文言(ccc,dddの部分)で埋めておきますが、ひな形を使って表示する時は適当な文言はひな形側を使いたいという状態です。
ソースHTMLの
<div id="here">
xxx
<a href=hoge>hoge</a>
yyy
:
</div>
がソースHTMLでは必用でそれ以外はひな形に書かれたコードを出したいのです。
<div id="here"></div>は本当は
【ひな形】
<div>
aaaaaaaaa
<!-- #replace(1) -->
bbbbbbbb
</div>
【ソース】
<div>
ccccccccccc
<!-- #replace(1) from -->
xxx
<a href=hoge>hoge</a>
yyy
:
<!-- #replace(1) to -->
dddddddd
</div>
のようにコメントで書けるとタグの階層が変わらなくて嬉しいのですが、そこまでやる方法が分からなかったのでdivで囲みました。 <div id="here">というタグは最終形には不要なので出力時には取ってしまいたいのです。
それで次のようなコードを書いてみました。(説明用の抜粋です)
AbstractJaxb master = masterHtml.getById(id, tagType); // masterにソースHTMLの<div id="here">を入れておく
:
Div tag = (Div) master;
List<Object> m = tag.getContent();
for (Object content : m) {
AbstractJaxb a = cast(content); // castはObjectからAbstractJaxbに変換する自作メソッド
if (a == null) {
continue; // contentがStringだとinsertBeforeIdができない ---(A)
}
sourceHtml.getBody().insertBeforeId(id, a);
}
sourceHtml.removeById(id); // <div id="here">を削除する
これで大体期待通りの結果になるのですが (A)の部分が困っています。
getContentで取り出したObjectがStringだとAbstractJaxbの派生クラスに変換できないのでinsertBeforeIdができません。
これができればやりたいことが実現できるのですが、String型をinsertBeforeIdに入れるにはどうしたら良いのでしょうか?