Apache XMLBeans を使用して、String をエスケープして XML ドキュメントに埋め込みたいと考えています。たとえば、すべての XML エンティティをエンコードします。
XmlString はこの機能を提供しますが、出力を xml-fragment タグでラップすることを主張します。これは削除したいと考えています。
しかし、私は推測には興味がありません
- XMLBeans 以外のものを使用する (org.apache.commons.lang.StringEscapeUtils など)
- エスケープ後に囲んでいるタグを削除する (例: 正規表現を使用)
これがテストケースです。直してもらえますか?
import org.apache.xmlbeans.*;
public class Test {
@Test public void test(){
String input = "You & me";
String expected = "You & me";
String actual = escape(input);
Assert.assertEquals(expected, actual);
// Fails with: ComparisonFailure: expected:<[You & me]>
// but was:<[<xml-fragment>You & me</xml-fragment>]>
}
private String escape(String str){
XmlString value = XmlString.Factory.newInstance();
value.setStringValue(input);
XmlOptions opts = new XmlOptions();
// do I need to set one of the 54 available options?
// see http://xmlbeans.apache.org/docs/2.4.0/reference/org/apache/xmlbeans/XmlOptions.html
return value.xmlText(opts);
}
}