我是靠谱客的博主 平常乐曲,最近开发中收集的这篇文章主要介绍.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文件,返回
            }
        }

最后

以上就是平常乐曲为你收集整理的.net core XSD验证XML字符串的全部内容,希望文章能够帮你解决.net core XSD验证XML字符串所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部