第9章 Groovy スクリプト
9.1. Groovy リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Groovy は、Java 仮想マシン用のアジャイルで動的な言語であり、Java の長所に基づいて、構築されていますが、Python、Ruby、Smalltalk などの言語に触発された追加の強力な機能を備えています。
詳細については、http://groovy.codehaus.org/ を参照してください。
9.2. Groovy の例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Groovy スクリプトのサポートは、設定 namespace (http://www.milyn.org/xsd/smooks/groovy-1.1.xsd) で提供されます。 この namespace は、DOM および SAX ベースのスクリプトをサポートします。以下の例を参照してください。
9.3. Groovy のヒント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
- ビジットされた要素 は、適切な名前の変数によってスクリプトで使用できます。element(要素名と同じ変数名でも使用できますが、後者の名前が英数字に制限されている場合に限ります。)
- 前に実行/後に実行: デフォルトでは、visitAfter イベントの発生時、スクリプトが実行されます。executeBefore 属性を
true
に設定して、visitBefore で実行するように、指示します。 - コメント/CDATA スクリプトラップ: スクリプトに特殊な XML 文字が含まれている場合は、スクリプトを
XML Comment
またはCDATA
セクションでラップできます。
9.4. Imports リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
imports 要素を使用して、インポート を追加します。多くのクラスが自動的にインポートされます。
org.milyn.xml.DomUtils
org.milyn.javabean.context.BeanContext
.Smooks 1.3 以降のみ。org.milyn.javabean.repository.BeanRepository
org.w3c.dom.*
groovy.xml.dom.DOMCategory
groovy.xml.dom.DOMUtil
groovy.xml.DOMBuilder
9.5. Groovy で DOM と SAX の混合を使用する リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Groovy は、DOM と SAX の混合モデルをサポートしています。Groovy の DOM ユーティリティーを使用して、対象のメッセージフラグメントを処理できます。SAX フィルターが使用されている場合も、Groovy スクリプトは、DOM の要素を受け取ります。これにより、SAX フィルターを使用する Groovy スクリプトがはるかに簡単になり、ストリーミング方式で巨大なメッセージを処理する機能が維持されます。
9.6. DOM と SAX の混合のヒント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
注意事項:
- デフォルトモードのみで使用できます (つまり、executeBefore が
false
に等しい場合)。executeBefore がtrue
であるように設定されている場合、この機能は、利用できません。つまり、Groovy スクリプトは、SAXElement のみにアクセスできます。 - writeFragment は、DOM フラグメントを
Smooks.filterSource StreamResult
に書き込むために、呼び出す必要があります。 - この DOM 構成機能を使用すると、パフォーマンスのオーバーヘッドが発生します。(巨大なメッセージを処理することはできますが、少し時間がかかる場合があります。妥協点は使いやすさとパフォーマンスの間です。)
9.7. DOM と SAX の混合の例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
手順9.1 タスク
- 次のサンプルのような XML メッセージを考えてみましょう。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 上記の買い物リストの消耗品カテゴリーを変更するには、さらに 2 つのペンを追加します。これを行うには、単純な Groovy スクリプトを記述し、メッセージの <category> 要素を対象とします。
- その結果、スクリプトは単純にカテゴリー内の <item> 要素を反復し、カテゴリータイプが「消耗品」で品目が「ペン」の場合、数量は 2 つ増加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow