csharp 数据注释属性,用于验证字符串是否为有效的XML

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 数据注释属性,用于验证字符串是否为有效的XML相关的知识,希望对你有一定的参考价值。

using System.ComponentModel.DataAnnotations;
using System.Xml;

namespace CHR.API.Provisioning.ATT.BusinessLogic.DataValidation
{
    /// <inheritdoc />
    /// <summary>
    /// Data annotation attribute to verify that string is a valid XML
    /// </summary>
    public class ValidXml : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (!(value is string))
            {
                return new ValidationResult($"'{validationContext.MemberName}' property of '{validationContext.ObjectType.Name}' class is not a string property.");
            }
            var xmlString = (string) value;
            try
            {
                // Check we actually have a value
                if (string.IsNullOrEmpty(xmlString) == false)
                {
                    // Try to load the value into a document
                    var xmlDoc = new XmlDocument();

                    xmlDoc.LoadXml(xmlString);

                    // If we managed with no exception then this is valid XML!
                    return ValidationResult.Success;
                }
                // A blank value is not valid xml
                return new ValidationResult($"'{validationContext.MemberName}' is an empty string.");
            }
            catch (XmlException)
            {
                return new ValidationResult($"'{validationContext.MemberName}' is not a valid XML.");
            }
        }
    }
}

以上是关于csharp 数据注释属性,用于验证字符串是否为有效的XML的主要内容,如果未能解决你的问题,请参考以下文章

csharp MaxWords自定义验证注释属性

csharp 用于测试数据的验证属性晚于另一个

具有客户端验证的自定义数据注释验证属性

csharp 数据注释,验证

csharp 验证属性,用于确保输入的最小位数

csharp 验证可用于web api的AntiForgery令牌属性