public void GenerateTypeCheckingMethod(XmlType xmlType) { var checkMethodName = XmlCodeGeneratorMethodNameProvider.GetNameForElementTypeCheckMethod(xmlType); _stringBuilder.AppendLine($"private void {checkMethodName}(XElement {CodeGeneratorConstants.ELEMENT_CHECK_METHOD_ELEMENT_VARIABLE_NAME})"); using (new CodeGeneratorBlockWrapper(_stringBuilder)) { GenerateCheckMethodBody(xmlType); } }
private void GenerateRootElementValidation(List <XmlElement> rootElements) { for (var i = 0; i < rootElements.Count; i++) { var rootElement = rootElements[i]; _stringBuilder.AppendLine($"{(i == 0 ? "" : "else ")}if ({ROOT_ELEMENT_VARIABLE_NAME}.Name.LocalName.Equals(\"{rootElement.Name}\", StringComparison.OrdinalIgnoreCase))"); using (new CodeGeneratorBlockWrapper(_stringBuilder)) { XmlElementNameCorrectorCodeGenerator.GenerateElementNameCorrector(rootElement, _stringBuilder, ROOT_ELEMENT_VARIABLE_NAME); var elementCheckMethodName = XmlCodeGeneratorMethodNameProvider.GetNameForElementTypeCheckMethod(rootElement.Type); _stringBuilder.AppendLine($"{elementCheckMethodName}({ROOT_ELEMENT_VARIABLE_NAME});"); } } }
public void GenerateTypeCheckingMethod(XmlType xmlType) { var checkMethodName = XmlCodeGeneratorMethodNameProvider.GetNameForAttributeCheckMethod(xmlType); _stringBuilder.AppendLine($"private void {checkMethodName}(XAttribute {ATTRIBUTE_VARIABLE_NAME})"); using (new CodeGeneratorBlockWrapper(_stringBuilder)) { var enumerationType = xmlType as XmlEnumerationType; if (enumerationType != null) { GenerateEnumerationAttributeCheckMethod(enumerationType); } else { _stringBuilder.AppendLine("// Only attributes with enumeration restriction are currently supported for validation"); } } }
public static void GenerateAttributesCheckingCode(XmlTypeWithAttributes xmlType, StringBuilder stringBuilder) { if (!xmlType.Attributes.Any()) { return; } stringBuilder.AppendLine($"foreach (var {CodeGeneratorConstants.ELEMENT_CHECK_METHOD_CHILD_ATTRIBUTE_VARIABLE_NAME} in {CodeGeneratorConstants.ELEMENT_CHECK_METHOD_ELEMENT_VARIABLE_NAME}.Attributes().ToList())"); using (new CodeGeneratorBlockWrapper(stringBuilder)) { for (var i = 0; i < xmlType.Attributes.Count; i++) { var attribute = xmlType.Attributes[i]; stringBuilder.AppendLine($"{(i == 0 ? "" : "else ")}if ({CodeGeneratorConstants.ELEMENT_CHECK_METHOD_CHILD_ATTRIBUTE_VARIABLE_NAME}.Name.LocalName.Equals(\"{attribute.Name}\", StringComparison.OrdinalIgnoreCase))"); using (new CodeGeneratorBlockWrapper(stringBuilder)) { var elementCheckMethodName = XmlCodeGeneratorMethodNameProvider.GetNameForAttributeCheckMethod(attribute.Type); stringBuilder.AppendLine($"{elementCheckMethodName}({CodeGeneratorConstants.ELEMENT_CHECK_METHOD_CHILD_ATTRIBUTE_VARIABLE_NAME});"); XmlElementNameCorrectorCodeGenerator.GenerateAttributeNameCorrector(attribute, stringBuilder, CodeGeneratorConstants.ELEMENT_CHECK_METHOD_CHILD_ATTRIBUTE_VARIABLE_NAME); } } } }
private void GenerateElementsCheckingCode(XmlComplexType xmlType) { if (!xmlType.PossibleChildElements.Any()) { return; } _stringBuilder.AppendLine($"foreach (var {CHILD_ELEMENT_VARIABLE_NAME} in {CodeGeneratorConstants.ELEMENT_CHECK_METHOD_ELEMENT_VARIABLE_NAME}.Elements().ToList())"); using (new CodeGeneratorBlockWrapper(_stringBuilder)) { for (var i = 0; i < xmlType.PossibleChildElements.Count; i++) { var element = xmlType.PossibleChildElements[i]; _stringBuilder.AppendLine($"{(i == 0 ? "" : "else ")}if ({CHILD_ELEMENT_VARIABLE_NAME}.Name.LocalName.Equals(\"{element.Name}\", StringComparison.OrdinalIgnoreCase))"); using (new CodeGeneratorBlockWrapper(_stringBuilder)) { XmlElementNameCorrectorCodeGenerator.GenerateElementNameCorrector(element, _stringBuilder, CHILD_ELEMENT_VARIABLE_NAME); var elementCheckMethodName = XmlCodeGeneratorMethodNameProvider.GetNameForElementTypeCheckMethod(element.Type); _stringBuilder.AppendLine($"{elementCheckMethodName}({CHILD_ELEMENT_VARIABLE_NAME});"); } } } }