1
ユーザーからのXPATH入力を処理できるAPIを設計したいと思います。 は現在、私は ユーザーからxpath入力を受け付けるためのデザインAPI
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 + ") ";
}
}
を実装し、インタフェースXPATHFunction及びその方法でそれを実装する必要があり、他のXPath関数がある可能性があり、次のようにXPATH入力をモデル化しています。
APIはXPATHConditionを作成し、適切な関数を設定してgetConditionString()メソッドを呼び出して最終的なxpathを取得するだけです。
もっと良い方法がありますか、XPATH入力をモデル化できますか?
上記のデザインを再考するのを手伝ってください。
で使用する属性名をできるように、私は何を理解していません君はしたい。ユーザーはXPathsを入力しますか? ...そしてこのXPathsでシステムは何をすべきですか? – MiMo
現在、我々は平易な文字列入力としてXPATHを受け入れています。私はいくつかのAPIを使用してxpathを構築したいと思います。エラーの可能性を最小限に抑えるようにしましょう。ユーザーはAPIを使用してxpathを与え、APIの最終出力は完全なxpath文字列です。 –
ありがとう、今私は気難しい – MiMo