.net core XSD验证XML字符串

		XmlValidateByXsd("xml文本内容","xsd所在目录");
		//如果返回不为空 说明xml格式不符合规范
        /// <summary>  
        /// 通过xsd验证xml格式是否正确,正确返回空字符串,错误返回提示  
        /// </summary>  
        /// <param name="xmlText">xml文本内容</param>  
        /// <param name="schemaFile">xsd文件</param>  
        /// <returns></returns>  
        public static string XmlValidateByXsd(string xmlText,string schemaFile)
        {
			StringBuilder sb=new();
			XmlReaderSettings settings = new()
            {
                ValidationType = ValidationType.Schema
            };
            settings.Schemas.Add(null, schemaFile);
            settings.ValidationEventHandler += (x, y) =>
            {
                sb.AppendFormat("{0}\n", y.Message);
            };
            using(XmlReader reader=XmlReader.Create(new StringBuilder(xmlText),settings))
            {
            	try
            	{
            	while(reader.Read());
			    }
			    catch(XmlException ex)
			    {
					sb.AppendFormat("{0}\n",ex.Message);
				}
		    }
		    return sb.ToString();
		}
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xs:annotation>
		<xs:documentation> 本文档定义通用参数xml格式 </xs:documentation>
	</xs:annotation>
	<xs:element name="root">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="area" maxOccurs="unbounded">
				<xs:complexType>
				<xs:sequence>
				<xs:element name="para" maxOccurs="unbounded">
				<xs:complexType>
				<xs:sequence>
				</xs:sequence>
				<xs:attribute name="name">
				<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:minLength value="1"/>
					<xs:maxLength value="50"/>
				</xs:simpleType>
				</xs:attribute >
				<xs:attribute name="title">
				<xs:simpleType>
				<xs:restriction base="xs:string">
						<xs:minLength value="1"/>
						<xs:maxLength value="500"/>
				</xs:restriction>
				</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="maxlength">
				<xs:simpleType>
				<xs:restriction base="xs:int">
				<xs:minInclusive value="1"/>
				<xs:maxInclusive value="9999"/>
				</xs:restriction>
				</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="minlength">
				<xs:simpleType>
				<xs:restriction base="xs:int">
				<xs:minInclusive value="1"/>
				<xs:maxInclusive value="9999"/>
				</xs:restriction>
				</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="type">
				<xs:simpleType>
				<xs:restriction base="xs:string">
				<xs:enumeration value="1"/>
				<xs:enumeration value="2"/>
				<xs:enumeration value="3"/>
				</xs:restriction>
				</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="isreqired">
				<xs:simpleType>
				<xs:restriction base="xs:string">
				<xs:enumeration value="1"/>
				<xs:enumeration value="0"/>
				</xs:restriction>
				</xs:simpleType>
				</xs:attribute>
				</xs:complexType>
				</xs:element>
				</xs:sequence>
			<xs:attribute name="name" use="required"/>
			<xs:attribute name="title" use="required"/>
		</xs:complexType>
		</xs:element>
		</xs:sequence>
	</xs:complexType>
	</xs:element>
</xs:schema>

需要验证的内容
在这里插入图片描述

		/// <summary>
        /// 判断字符串是不是xml格式
        /// </summary>
        /// <param name="strXml">需要验证得字符串</param>
        /// <returns></returns>
        public static bool IsXml(this string strXml)
        {
            try
            {
                XmlDocument xml = new();
                xml.LoadXml(strXml);//判断是否加载成功
                return true;//是xml文件,返回
            }
            catch
            {
                return false;//不是xml文件,返回
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值