[TEXT-229] Add XmlEncoderStringLookup/XmlDecoderStringLookup - ASF Jira (original) (raw)
While we have URL encoder and decoder it'd be helpful to have builtin XmlEncoderStringLookup and XmlDecoderStringLookup.
public static void main(String[] args) {
Map<String, StringLookup> lookups = new HashMap<>();
lookups.put("xmlEncoder", XmlEncoderStringLookup.INSTANCE);
Map<String, String> vars = new HashMap<>();
vars.put("foo", "bar");
vars.put("baz", "<password>");
StringLookupFactory factory = StringLookupFactory.INSTANCE;
StringLookup interpolatorStringLookup = factory.interpolatorStringLookup(lookups, factory.mapStringLookup(vars), false);
StringSubstitutor sub = new StringSubstitutor(interpolatorStringLookup);
sub.setEnableSubstitutionInVariables(true);
System.out.println(sub.replace("${foo}, <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mi>m</mi><mi>l</mi><mi>E</mi><mi>n</mi><mi>c</mi><mi>o</mi><mi>d</mi><mi>e</mi><mi>r</mi><mo>:</mo><mo><</mo><mi>f</mi><mi>o</mi><mi>o</mi><mi>b</mi><mi>a</mi><mi>r</mi><msup><mo>=</mo><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><mi>s</mi><mi>d</mi><mi>f</mi><mi>s</mi><msup><mi>f</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><mi mathvariant="normal">/</mi><mo>></mo></mrow><annotation encoding="application/x-tex">{xmlEncoder:<foo bar='sdfsf' />} </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0019em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="mord mathnormal">m</span><span class="mord mathnormal" style="margin-right:0.05764em;">lE</span><span class="mord mathnormal">n</span><span class="mord mathnormal">co</span><span class="mord mathnormal">d</span><span class="mord mathnormal" style="margin-right:0.02778em;">er</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">:<</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal">oo</span><span class="mord mathnormal">ba</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel"><span class="mrel">=</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7519em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord mathnormal">s</span><span class="mord mathnormal" style="margin-right:0.10764em;">df</span><span class="mord mathnormal">s</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7519em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mord">/</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">></span></span></span></span></span>{xmlEncoder:${baz}}"));
}