private static OpenApiExample ToOpenApiExample()

in src/Microsoft.OpenApi.CSharpAnnotations.DocumentGeneration/Extensions/XElementExtensions.cs [390:482]


        private static OpenApiExample ToOpenApiExample(
            this XElement element,
            Dictionary<string, FieldValueInfo> crefFieldValueMap,
            List<GenerationError> generationErrors)
        {
            var exampleChildElements = element.Elements();

            if (!exampleChildElements.Any())
            {
                return null;
            }

            var summaryElement = exampleChildElements.FirstOrDefault(p => p.Name == KnownXmlStrings.Summary);

            var openApiExample = new OpenApiExample();

            if (summaryElement != null)
            {
                openApiExample.Summary = summaryElement.Value;
            }

            var valueElement = exampleChildElements.FirstOrDefault(p => p.Name == KnownXmlStrings.Value);
            var urlElement = exampleChildElements.FirstOrDefault(p => p.Name == KnownXmlStrings.Url);

            if (valueElement != null && urlElement != null)
            {
                generationErrors.Add(
                    new GenerationError
                    {
                        ExceptionType = nameof(InvalidExampleException),
                        Message = SpecificationGenerationMessages.ProvideEitherValueOrUrlTag
                    });

                return null;
            }

            IOpenApiAny exampleValue = null;

            if (valueElement != null)
            {
                var seeNodes = element.Descendants(KnownXmlStrings.See);
                var crefValue = seeNodes
                    .Select(node => node.Attribute(KnownXmlStrings.Cref)?.Value)
                    .FirstOrDefault(crefVal => crefVal != null);

                if (string.IsNullOrWhiteSpace(valueElement.Value) && string.IsNullOrWhiteSpace(crefValue))
                {
                    generationErrors.Add(
                    new GenerationError
                    {
                        ExceptionType = nameof(InvalidExampleException),
                        Message = SpecificationGenerationMessages.ProvideValueForExample
                    });

                    return null;
                }

                if (!string.IsNullOrWhiteSpace(valueElement.Value))
                {
                    exampleValue = new OpenApiStringReader()
                        .ReadFragment<IOpenApiAny>(
                            valueElement.Value,
                            OpenApiSpecVersion.OpenApi3_0,
                            out OpenApiDiagnostic _);
                }

                if (!string.IsNullOrWhiteSpace(crefValue) && crefFieldValueMap.ContainsKey(crefValue))
                {
                    var fieldValueInfo = crefFieldValueMap[crefValue];

                    if (fieldValueInfo.Error != null)
                    {
                        generationErrors.Add(fieldValueInfo.Error);

                        return null;
                    }

                    exampleValue = new OpenApiStringReader().ReadFragment<IOpenApiAny>(
                        fieldValueInfo.Value,
                        OpenApiSpecVersion.OpenApi3_0,
                        out OpenApiDiagnostic _);
                }

                openApiExample.Value = exampleValue;
            }

            if (urlElement != null)
            {
                openApiExample.ExternalValue = urlElement.Value;
            }

            return openApiExample;
        }