Wednesday, February 23, 2011

タグの中身の操作方法

XHTML/HTMLのタグの多くは内部に任意のタグまたは文字列を持つことができます(入れ子タグ)。 mixer2でのタグの中のタグ/文字列へのアクセスと操作方法の基本について解説します。

divやspanのように、中になんでも入れられるようなタグの場合は必ずプロパティとしてcontent(java.util.List型)を持っており、それに対するgetContent(), setContent(), unsetContent()で操作することができます。

例えば次のような形でテンプレートをloadしたと仮定します。

<html>
<head>
   <title>タイトルです</title>
</head>
<body>
    <div id="foo">aaa<b>bbb</b>ccc</div>
</body>
</html>
Html html = mixer2Engine.loadHtmlTemplate(new File("テンプレファイル"));
Div div = html.getById("foo",Div.class);
java.util.List list1 = div.getContent();

このとき、list1の内部は次のような値が格納されています。

添え字内容
0java.lang.Stringaaa
1org.mixer2.jaxb.xhtml.BBタグオブジェクト
2java.lang.Stringccc

list1はdivタグの中身の実体をList型で抱えていますので、あとは普通にList型を扱うように add(追加したいもの)、remove(消したいものの添え字)、set(添え字、置換物)等のメソッドで扱えます。

Html html = mixer2Engine.loadHtmlTemplate(new File("テンプレファイル"));
Div div = html.getById("foo",Div.class);
java.util.List list1 = div.getContent();

list1.add("ddd"); 
list1.set(1, new Br());
list1.remove(2);
System.out.println(m2e.saveToString(html));

上記によって、divタグの中を次のように書き換えたものを得ることができます。

<html>
<head>
<title>タイトルです</title>
</head>
<body>
<div id="foo">aaa<br />ddd</div>
</body>
</html>

No comments:

Post a Comment