0

XML 및 XSD가 문자열에 포함되어 있고 실제로 혼란 스러울 때 간단한 XML 유효성 검사 코드를 찾고있었습니다. 이걸 내가 찾은 몇 가지 것들과 합쳐서 다른 사람들에게 도움이되기를 바랍니다! 의견을 말하고 언제든지 내가 이것을 발견했을지도 모르는 곳을 지적하고, 내가 이것을 향상시킬 수있는 곳을 말하며,보다 효율적으로 말하십시오. 유효성 검사 오류가 발생하면 내 오류 문자열에 직접 씁니다.두 경우 모두 문자열에있는 XSD에 대한 XML 유효성 검사

건배!

+0

여러 개의 오류가 발생하면 모두 나열됩니다. – newby

답변

0
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