Я хочу разработать API, который мог бы обрабатывать ввод XPATH от пользователя.В настоящее время у меня есть модель ввода XPATH следующим образом:
public interface ICondition {
String getConditionString();
}
public class XPathCondition implements ICondition {
private Class<? extends XPATHFunction> clazz = null;
private Operator operator = null;
private String compValue = null;
private String param = null;
public void setXPathFunction(Class<? extends XPATHFunction> clazz) {
this.clazz = clazz;
}
public void setComparisionType(Operator operator) {
this.operator = operator;
}
public void setComparisionValue(String value) {
this.compValue = value;
}
public void setParam(String param) {
this.param = param;
}
public String getConditionString() {
XPATHFunction function = null;
try {
function = (XPATHFunction) clazz.newInstance();
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
return function.call(param) + operator.getOprValue() + compValue;
}
public static void main(String[] args) {
XPathCondition xpathCond = new XPathCondition();
xpathCond.setXPathFunction(CountFunction.class);
xpathCond.setParam("/CPRRegistrationInfo/*");
xpathCond.setComparisionType(Operator.GT);
xpathCond.setComparisionValue("0");
System.out.println(xpathCond.getConditionString());
}
}
public interface XPATHFunction {
public String call(String param);
}
public class CountFunction implements XPATHFunction {
public String call(String param) {
return "count(" + param + ") ";
}
}
Может быть другая функция XPATH, которая должна реализовывать и взаимодействовать с XPATHFunction и реализовывать ее по-своему.
API просто создатьXPATHCondition и установите соответствующую функцию и вызовите метод getConditionString () для получения окончательного xpath.
Есть ли лучший способ, мы можем смоделировать ввод XPATH?
Пожалуйста, помогите мне пересмотреть вышеупомянутый дизайн.