private FieldConfig parseFieldConfig(Node fieldNode) throws ConfigException { NamedNodeMap attr = fieldNode.getAttributes(); Node nameNode = attr.getNamedItem(XMLConfigConstant.NAME); if (nameNode == null) { throw new ConfigException(ErrorMsg.NO_NAME_PROPERTY_FOR_FIELD); } FieldConfig fieldConfig = new FieldConfig(nameNode.getNodeValue()); NodeList validateRule = fieldNode.getChildNodes(); if (validateRule == null || validateRule.getLength() == 0) { return null; } for (int i = 0; i < validateRule.getLength(); i++) { Node node = validateRule.item(i); if (node.getNodeType() != Node.ELEMENT_NODE) { continue; } AbstractValidator validator = ValidatorRegistry.getInstance().getValidator(node.getNodeName()); if (validator == null) { throw new ConfigException(ErrorMsg.NO_SUCH_VALIDATOR_ERROR + node.getNodeName()); } else { fieldConfig.addRule(validator.parseRuleConfig(node)); } } return fieldConfig; }