just split ]]> into adjacent CDATA's

This commit is contained in:
Gregory.Shrago
2015-02-16 15:25:12 +03:00
parent bdef866f7d
commit 1f400a987d
2 changed files with 7 additions and 8 deletions
@@ -33,12 +33,11 @@ public class XmlStringUtil {
@NotNull
public static String wrapInCDATA(@NotNull String str) {
StringBuilder sb = new StringBuilder();
int cur = 0, next, len = str.length();
int cur = 0, len = str.length();
while (cur < len) {
next = StringUtil.indexOf(str, CDATA_END, cur);
sb.append(CDATA_START).append(str.subSequence(cur, next = next < 0 ? len : next)).append(CDATA_END);
if (next < len) sb.append(escapeString(CDATA_END));
cur = next + CDATA_END.length();
int next = StringUtil.indexOf(str, CDATA_END, cur);
sb.append(CDATA_START).append(str.subSequence(cur, next = next < 0 ? len : next + 1)).append(CDATA_END);
cur = next;
}
return sb.toString();
}
@@ -367,8 +367,8 @@ public class StringUtilTest extends TestCase {
public void testXmlWrapInCDATA() {
assertEquals("<![CDATA[abcd]]>", XmlStringUtil.wrapInCDATA("abcd"));
assertEquals("<![CDATA[abcd]]>]]&gt;", XmlStringUtil.wrapInCDATA("abcd]]>"));
assertEquals("<![CDATA[abcd]]>]]&gt;<![CDATA[efgh]]>", XmlStringUtil.wrapInCDATA("abcd]]>efgh"));
assertEquals("<![CDATA[123<![CDATA[wow<&>]]>]]&gt;<![CDATA[]]>]]&gt;<![CDATA[<![CDATA[123]]>", XmlStringUtil.wrapInCDATA("123<![CDATA[wow<&>]]>]]><![CDATA[123"));
assertEquals("<![CDATA[abcd]]]><![CDATA[]>]]>", XmlStringUtil.wrapInCDATA("abcd]]>"));
assertEquals("<![CDATA[abcd]]]><![CDATA[]>efgh]]>", XmlStringUtil.wrapInCDATA("abcd]]>efgh"));
assertEquals("<![CDATA[123<![CDATA[wow<&>]]]><![CDATA[]>]]]><![CDATA[]><![CDATA[123]]>", XmlStringUtil.wrapInCDATA("123<![CDATA[wow<&>]]>]]><![CDATA[123"));
}
}