验证的java设计问题

时间:2011-05-16 20:22:16

标签: java xml validation

我有以下要求: 我有一个验证系统。我需要做的一件事是对XML文件执行验证,这意味着验证标记X等于给定值。我有多个可能的场景,并且在每个场景中都有一组不同的标签需要验证。

在不同情况下测试相同标签时,我不想重复相同的代码。

我正在试图找出一个可以解决这个问题的设计。

有什么想法吗?

感谢。

3 个答案:

答案 0 :(得分:0)

我定义了一对XPath表达式和场景的预期结果。

验证器然后将采用方案(对象),编译并将关联的表达式应用于xml文档。这将选择一个元素,如果元素的内容与期望值匹配,验证器将检查。

答案 1 :(得分:0)

嗯,委托共享方法?像:

void validateAppleScenario(Xml xml) {
    validateFruit(xml);
    // validate apples specific tags
}

void validateBanana(Xml xml) {
    validateFruit(xml);
    // validate banana specific tags
}

void validateFruit(Xml xml) {
    // validate tags common to all fruit
}

或者,如果您希望验证器是单独的对象,则可以使用子类型:

interface Validator {
    void validate(Xml xml);
}

class FruitValidator implements Validator {
    void validate(Xml xml) {
        // validate tags common to all fruit
    }
}

class AppleValidator extends FruitValidator {
    void validate(Xml xml) {
        super.validate(xml);
        // validate tags specific to apples
    }
}

答案 2 :(得分:0)

一种方法是将XML解析为对象,然后根据Bean Validation规范(JSR 303)对其进行验证。 Hibernate Validator是参考实现。*您可以使用验证约束来注释属性,然后指定validation groups以便在某些情况下验证某些字段。

有更多信息herehere

* Hibernate Validator与Hibernate ORM不同。它们只是因为Hibernate ORM使用Validator进行约束检查。