1
我想转义字符串中的XML特殊字符。如下所示,通过静态方法处理转义。如何避免在JAVA中重复分析XML特殊字符
public static String escapeXml10(String response) {
return StringEscapeUtils.escapeXml10(response);
}
现在这个实现的问题是,我得到一块字符串,可能会或可能不会被解析。这导致不规则的输出。
为例如:
- & - > &安培(该字符串不被解析遵循不同的流量)
- & - > &安培; (这个字符串被流解析一次,现在被我的代码解析)。
现在为了得到正确的回应,我打算在静态metod中引入一个检查。通过使用条件如下所示。
public static String escapeXml10(String response) {
if(response.contains("&") ||
response.contains("<") ||
response.contains(">") ||
response.contains("'") ||
response.contains(""")){
return response;
}else{
return StringEscapeUtils.escapeXml10(response);
}
}
这是一个正确的执行方式,如果不是请建议?
那么,你传递的不是XML的东西到XML解析器?为什么你首先做到这一点?问题在于你的流程。你应该不必这么做:它显示了一个设计问题。 –
@JBNizet,我正在形成一个来自UI的输入,这些值被带入xml,然后被赋予一个流程引擎。用户界面可能像浏览器,命令行和少数应用程序。现在,这部分代码是一个接口,它负责将输入转换为流程引擎能够理解的格式。我认为这不是一个设计问题。如果不是,请纠正我。 – User27854
因此,如果我明白了,您将从浏览器获得输入,并将其转换为用于流程引擎的XML。而且你正在对来自命令行,app1,app2等的输入做同样的处理。所以最后,每个输入都应该是XML,适合流程引擎。那么,为什么你必须逃避任何事情,为什么结果有时会被解析,有时甚至没有。 –