テストソース
import org.apache.commons.betwixt.*; import org.apache.commons.betwixt.io.*; import org.apache.commons.betwixt.strategy.*; /** * Betwixt で bodyContent のエスケープ方式をカスタマイズする。 */ public class TestBetwixt { /** * for test */ public static void main(String[] args) throws Exception{ TestBetwixtData data = new TestBetwixtData(); data.setValue1("'"); BeanWriter beanWriter = new BeanWriter(System.out); beanWriter.getBindingConfiguration().setMapIDs(false); System.out.println("標準の MixedContentEncodingStrategy を使用した場合"); beanWriter.write(data); System.out.println(""); System.out.println("自分で作成した MixedContentEncodingStrategy を使用した場合"); beanWriter.setMixedContentEncodingStrategy(CUSTOM); beanWriter.write(data); } /** * @see MixedContentEncodingStrategy#DEFAULT */ private static final MixedContentEncodingStrategy CUSTOM = new BaseMixedContentEncodingStrategy() { /** * デフォルトの実装をそのまま真似します。 * @see MixedContentEncodingStrategy#DEFAULT{@link #encodeAsCDATA(ElementDescriptor)} */ protected boolean encodeAsCDATA(ElementDescriptor element) { boolean result = false; if (element != null ) { String optionValue = element.getOptions().getValue(ENCODING_OPTION_NAME); result = CDATA_ENCODING.equals(optionValue); } return result; } /** * Bodyコンテンツのエスケープを行います。 * @param bodyContent null でないエスケープすべきキャラクタデータ。 * @return エスケープされたnullでないキャラクターデータ。 */ protected String escapeCharacters(String bodyContent) { //return XMLUtils.escapeBodyValue(bodyContent); 標準 // ここで bodyContent のキャラクタに対して色々変換できます。 // エスケープ方式の変更 ' apostrophe や " quote もエンコードします。 return XMLUtils.escapeAttributeValue(bodyContent); } }; }
/** * テストデータ */ public class TestBetwixtData { private String value1; private String value2; public String getValue1() {return value1;} public void setValue1(String value1) {this.value1 = value1;} public String getValue2() {return value2;} public void setValue2(String value2) {this.value2 = value2;} }
http://jakarta.apache.org/commons/betwixt/
http://jakarta.jp/commons/betwixt/index.html