tips/JAVA/空文字列で TextNode を生成する のバックアップ(No.2)



空文字列で TextNode を生成する

ドキュメントツリーにあらたなノードを追加する場合 Document インターフェイスの createXXX メソッドを使用しますが、 createTextNode で空文字のテキストノードを作成する場合、 createTextNode(""); とすると実際にはこのノードは作成されないようです。 (生成されたテキストノードを追加した要素が、子のノードを持たない要素となる)。

例:
Element element = docUnitList.createElement("TextTag");
element.appendChild(document.createTextNode(""));
結果:
<TextTag />

空文字のノードを追加する場合、 引き渡す文字列として "" ではなく明示的にあらたな String インスタンスを渡すと、 開始タグと終了タグの両方が出力されます。

例:
Element element = docUnitList.createElement("TextTag");
element.appendChild(document.createTextNode(new String()));
結果:
<TextTag></TextTag>

もっとも、この表記のタグも再度 JAXP の XML パーサなどで読み込むとテキスト要素を持たない要素と解釈されるようなので、 テキスト要素がない可能性も考慮してコーディングを行う必要があります。