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文件,返回
}
}