---
/**
* <code>org.w3c.dom</code>のテキストノードを、新しい要素の子に移動できるか。
* @throws Exception
*/
@Test
public void testNonMethod_MoveTextNodeToNewElement() throws Exception{
String xml = "<html><head/><body><h1>クラス Pattern</h1>コンパイル済みの正規表現です。" +
"<h1>クラス Matcher</h1>マッチ操作を行うエンジンです。</body></html>";
Document doc = DomUtils.stringToDocument(xml);
//bodyの子要素のテキストノードを<font color="red"></font>要素で囲みます。
NodeList nodeList = DomUtils.findNodesByXPath(doc, "/html/body/node()");
for(int i=0;i<nodeList.getLength();i++){
Node node = nodeList.item(i);
if(node.getNodeType() == Node.TEXT_NODE){
//親を呼び出します。
Node parent = node.getParentNode();
//新しい要素を生成します。
Element newElement = doc.createElement("font");
newElement.setAttribute("color", "red");
//ノードの挿入は親に頼みます。
parent.insertBefore(newElement, node);
//テキストノードを、挿入された新しい要素の子に移動します。元の場所から削除する必要はありません。
newElement.appendChild(node);
}
}
String actual = DomUtils.nodeToString(doc);
System.out.println(actual);
}
---
DomUtilsクラスは自作のクラスです。メソッド名から実装を想像してください。^ ^;
出力結果
---
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>クラス Pattern</h1><font color="red">コンパイル済みの正規表現です。</font><h1>クラス Matcher</h1><font color="red">マッチ操作を行うエンジンです。</font></body>
</html>
---
ではまた。
0 件のコメント:
コメントを投稿