Vb.net 当两者都是字符串时,针对XSD的XML验证
我一直在寻找简单的XML验证代码,但XML和XSD都是字符串,而且非常混乱。把我所发现的一些事情放在一起,希望这能帮助其他人!请随时发表评论,并指出我可能在哪里找到这个,告诉我在哪里可以改进这个,或者提高效率。如果验证失败,这将直接写入我的错误字符串 干杯Vb.net 当两者都是字符串时,针对XSD的XML验证,vb.net,visual-studio-2010,xsd,xml-validation,xsd-validation,Vb.net,Visual Studio 2010,Xsd,Xml Validation,Xsd Validation,我一直在寻找简单的XML验证代码,但XML和XSD都是字符串,而且非常混乱。把我所发现的一些事情放在一起,希望这能帮助其他人!请随时发表评论,并指出我可能在哪里找到这个,告诉我在哪里可以改进这个,或者提高效率。如果验证失败,这将直接写入我的错误字符串 干杯 导入系统 Imports System Imports System.IO Imports System.Text Imports System.Xml Imports System.Xml.Schema Module Module1
导入系统
Imports System
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Schema
Module Module1
Public validationErrors As String = Nothing
Sub main()
' The Following is not a valid Xml Document according to its XSD with multiple errors.
'Dim strXml As String = "<?xml version=""1.0"" encoding=""UTF-8""?><Address xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""><City>SuperCaliFragilisticExpiAllidocious</City><State>Confusion</State><Zipcode>16801</Zipcode></Address>"
' The following is a Valid XML document
Dim strXml As String = "<?xml version=""1.0"" encoding=""UTF-8""?><Address xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""><City>Hollywood</City><State>CA</State></Address>"
Dim strXsd As String = "<?xml version=""1.0"" encoding=""UTF-8""?><xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema"" elementFormDefault=""qualified"" attributeFormDefault=""unqualified""><xs:element name=""Address""><xs:annotation><xs:documentation /></xs:annotation><xs:complexType><xs:sequence><xs:element name=""City""><xs:simpleType><xs:restriction base=""xs:string""><xs:maxLength value=""25""/></xs:restriction></xs:simpleType></xs:element><xs:element name=""State""><xs:simpleType><xs:restriction base=""xs:string""><xs:maxLength value=""2""/></xs:restriction></xs:simpleType></xs:element></xs:sequence></xs:complexType></xs:element></xs:schema>"
validationErrors = xsdValidateXml(strXml, strXsd)
MsgBox(IIf(validationErrors = Nothing, "Passed XML Validation!", validationErrors))
End Sub
Friend Function xsdValidateXml(ByVal strXml As String, ByVal strXsd As String)
' Create an XML document
Dim xmlDocument As New XmlDocument
xmlDocument.LoadXml(strXml)
Dim schema As XmlReader = XmlReader.Create(New StringReader(strXsd))
xmlDocument.Schemas.Add("", schema)
xmlDocument.Validate(AddressOf ValidationEventHandler)
xsdValidateXml = validationErrors
End Function
Sub ValidationEventHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)
validationErrors += e.Message & vbCrLf & vbCrLf
End Sub
End Module
导入System.IO
导入系统文本
导入System.Xml
导入System.Xml.Schema
模块1
公共验证错误为字符串=无
副标题()
'根据其XSD,以下文档不是有效的Xml文档,存在多个错误。
'Dim strXml As String=“supercalifragilisticexpiallidocousconfusion16801”
'以下是有效的XML文档
Dim strXml为String=“HollywoodCA”
Dim strXsd As String=“”
validationErrors=xsdValidateXml(strXml,strXsd)
MsgBox(IIf(validationErrors=Nothing,“通过XML验证!”,validationErrors))
端接头
友元函数xsdValidateXml(ByVal strXml作为字符串,ByVal strXsd作为字符串)
'创建XML文档
将xmlDocument设置为新的xmlDocument
LoadXml(strXml)
Dim模式为XmlReader=XmlReader.Create(新StringReader(strXsd))
xmlDocument.Schemas.Add(“,schema)
Validate(ValidationEventHandler的地址)
xsdValidateXml=validationErrors
端函数
子ValidationEventHandler(ByVal发送方作为对象,ByVal e作为ValidationEventTargs)
validationErrors+=e.消息&vbCrLf&vbCrLf
端接头
端模块
如果遇到多个错误,它们将全部列出!