API разработки для получения ввода xpath от пользователя - PullRequest
1 голос
/ 01 марта 2012

Я хочу разработать 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?

Пожалуйста, помогите мне пересмотреть вышеупомянутый дизайн.

1 Ответ

0 голосов
/ 29 марта 2012

Не думаю, что могу прокомментировать структуру вашего класса или предложить что-то другое.Это очень сложная проблема.

Я бы предложил:

  • Начнем с некоторого простого подмножества полного синтаксиса XPath

  • Вместо того, чтобы начинать с разработки API, классы начинают разрабатывать пользовательский интерфейс: что вы собираетесь показать пользователю?Каковы его / ее возможные действия?Дизайн класса должен затем производиться от дизайна пользовательского интерфейса.

  • Если возможно, используйте схему для базового XML, чтобы вы могли предоставить пользователю ограниченный выбор возможных элементов и атрибутов.имя для использования в выражении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...