我需要逃避'&',但跳过 &
我用下一个功能
public static String translateAll(String input, String[] patterns, String[] replacements) {
String result = input;
for (int i = 0; i < patterns.length; i++) {
result = result.replaceAll(patterns[i], replacements[i]);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
...
private static final String[] decoded = { "&", "<", ">", "\"", "\'" };
private static final String[] encoded = { "&", "<", ">", """, "'" };
public static String escape(String input) {
return translateAll(input, decoded, encoded);
}
Run Code Online (Sandbox Code Playgroud)
...
String escapedBodyValue = XMLUtils.escape(originBodyValue);
Run Code Online (Sandbox Code Playgroud)
它取代了所有与使用&
,但它也全部替换&用&amp;
那么,如何跳过已经转义过的角色呢?
不要这样做.您刚刚突破的东西比他们更是已经...在1小时内,你会发现,你的做法也取代"的&quot;,而你需要做的另一个黑客...
你的逃跑显然已经被破坏了.不要使用字符串替换来破坏它,但尝试将数据解析回它应该意味着什么,然后使用产生正确转义版本的正确编码器.
简而言之:永远不会println用来生成XML.使用执行转义权限的XML生成器.
另见这个着名的 StackOverflow问题/答案:https://stackoverflow.com/a/1732454/1060350
| 归档时间: |
|
| 查看次数: |
7621 次 |
| 最近记录: |