我有以下要求: 我有一个验证系统。我需要做的一件事是对XML文件执行验证,这意味着验证标记X等于给定值。我有多个可能的场景,并且在每个场景中都有一组不同的标签需要验证。
在不同情况下测试相同标签时,我不想重复相同的代码。
我正在试图找出一个可以解决这个问题的设计。
有什么想法吗?
感谢。
答案 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以便在某些情况下验证某些字段。
* Hibernate Validator与Hibernate ORM不同。它们只是因为Hibernate ORM使用Validator进行约束检查。