我需要删除xml中的无效字符引用,也就是说,如果我的xml输入中包含类似以下内容的内容,

必须卸下或更换。流中已经去除了XML中无效字符的代码,因为输入已经转换了这些数字引用中的字符。我知道无效的xml字符是从20开始的十六进制数字,但是我不知道如何制作正则表达式。我想用Java编写代码。
以下是一些示例代码,可帮助您入门:
// Init replacement map
Map<Matcher, String> replacementMap = new HashMap<Matcher, String>() {
{
// Put your replacement rules here...
put(m("regex1"), "replacement1");
put(m("regex2"), "replacement2");
// ...
}
// Helper method for quickly creating a matcher and improve code readability
private Matcher m(String regex) {
return Pattern.compile(regex).matcher("");
}
};
// Load source string
String source = loadSourceString();
// Perform replacements
for(Map.Entry<Matcher, String> e: replacementMap.entrySet()) {
e.getKey().reset(source).replaceAll(e.getValue());
}
您首先创建一个替换图,然后将要更改的文本加载到字符串中。通过将Matcher
实例存储在替换字符串的前面,我们避免了模式编译的开销。
以下是替换规则的一些示例:
put(m("&x#[^;]{2};"), "")
这是最通用的方法。它删除任何字符序列。
put(m("&x#[2-9A-F][\dA-F];"), "BAZ")
此方法用替换十六进制范围[20-FF]中的任何字符序列BAZ
。
put(m("&x#.F;"), "FOO")
这将替换F
以FOO
。结尾的任何字符序列。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句