2010年2月13日土曜日

[java][dom]構造化されたタグの解除(2)

もう少し多層なテストケースです。
---
/**
 * 子要素を親要素に移動して自身の要素を削除することによりタグを解除できるか。
 * <p>
 * DocBook4のvariablelistの場合
 */
@Test
public void testPullUpChildByXPath_DocBook4_Variablelist() throws Exception{
  StringBuilder sb = new StringBuilder();
  sb.append("<section>");
  sb.append("<title>Java Platform, Standard Edition 6 API 仕様</title>");
  sb.append("<variablelist>");
  sb.append("<varlistentry>");
  sb.append("<term revisionflag=\"changed\">java.applet</term>");
  sb.append("<listitem>");
  sb.append("<para>アプレットの作成、およびアプレットとアプレットコンテキストとの通信に使用するクラスの作成に必要なクラスを提供します。</para>");
  sb.append("</listitem>");
  sb.append("</varlistentry>");
  sb.append("<varlistentry>");
  sb.append("<term>java.<phrase revisionflag=\"changed\">awt</phrase></term>");
  sb.append("<listitem>");
  sb.append("<para>ユーザーインタフェースの作成およびグラフィックスとイメージのペイント用のすべてのクラスを含みます。</para>");
  sb.append("</listitem>");
  sb.append("</varlistentry>");
  sb.append("<varlistentry>");
  sb.append("<term>java.beans</term>");
  sb.append("<listitem>");
  sb.append("<para>カラースペースのクラスを</para>");
  sb.append("<para>提供します。</para>");
  sb.append("</listitem>");
  sb.append("</varlistentry>");
  sb.append("</variablelist>");
  sb.append("</section>");
  String xml = sb.toString();
  
  sb.setLength(0);
  sb.append("<section>");
  sb.append("<title>Java Platform, Standard Edition 6 API 仕様</title>");
  sb.append("java.applet");
  sb.append("<para>アプレットの作成、およびアプレットとアプレットコンテキストとの通信に使用するクラスの作成に必要なクラスを提供します。</para>");
  sb.append("java.<phrase revisionflag=\"changed\">awt</phrase>");
  sb.append("<para>ユーザーインタフェースの作成およびグラフィックスとイメージのペイント用のすべてのクラスを含みます。</para>");
  sb.append("java.beans");
  sb.append("<para>カラースペースのクラスを</para>");
  sb.append("<para>提供します。</para>");
  sb.append("</section>");
  String expected = sb.toString();
  
  Document doc = DomUtils.stringToDocument(xml);
  //子の引き上げは下層からやります。
  DomUtils.pullUpChildByXPath(doc, "/section/variablelist/varlistentry/term");
  DomUtils.pullUpChildByXPath(doc, "/section/variablelist/varlistentry/listitem");
  DomUtils.pullUpChildByXPath(doc, "/section/variablelist/varlistentry");
  DomUtils.pullUpChildByXPath(doc, "/section/variablelist");
  String actual = DomUtils.nodeToString(doc);
  actual = XMLUtils.removeXMLDeclaration(actual);
  assertEquals(expected, actual);
}
---

ではまた。

0 件のコメント:

コメントを投稿