VB.NETでもXMLを扱いたい(その3)

jyuch.hatenablog.com

XMLの検証

Module Module1

    Sub Main()
        Section2()
    End Sub

    Function ReadSchema() As XmlSchema
        Dim xs As XmlSchema
        Using r = New StreamReader("mailbox.xsd")
            xs = XmlSchema.Read(r, Sub(sender, e) Console.WriteLine("{0}:{1}", e.Severity, e.Message))
        End Using
        Return xs
    End Function

    Sub Section2()
        Dim xss = New XmlSchemaSet()
        xss.Add(ReadSchema)

        Dim xdoc = New XmlDocument()
        Using r = New StreamReader("mailbox.xml")
            xdoc.Load(r)
        End Using
        xdoc.Schemas = xss

        xdoc.Validate(Sub(sender, e) Console.WriteLine("{0}:{1}", e.Severity, e.Message))
    End Sub

End Module

スキーマ違反のもの、たとえば以下のコードをmailbox.xmlに混ぜ込むと以下のエラーが返ります。

<mail></mail>
Error:要素 名前空間 'http://jyuch.com/mailbox' の 'mail' には不完全な内容が含ま
れています。必要とされる要素は 名前空間 'http://jyuch.com/mailbox' の 'from' で
す。

スキーマに反した<mail>タグなのでその旨のエラーが出ているわけですね。

おわり