Проверка xml как memorystream на соответствие xsd как string

#xml #vb.net #validation #xsd

#xml #vb.net #проверка #xsd

Вопрос:

Я хочу проверить xml на соответствие XSD (VB.NET ). Моя функция выглядит так:

 Private Function ValidateXML(ByVal xml As MemoryStream, ByVal xsd As String) As    ArrayList
End Function
  

Как я могу выполнить проверку, если мой xml представляет собой memorystream / stream (я использую stream, потому что мне не нужно хранить xml), а мой xsd представляет собой строку (я получаю свой xsd из веб-сервиса в виде строки, и мне не нужно сохранять его в файле)?

Большое спасибо за помощь!

Ответ №1:

Возможно, что-то вроде этого.

 Imports System.Xml
Imports System.IO
Imports System.Xml.Schema

Module Module1

    Private isvalid As Boolean

    Sub Main()
        Dim xml As MemoryStream
        Dim xsd As String
        Dim settings As New XmlReaderSettings()
        settings.ValidationType = ValidationType.Schema
        settings.Schemas.Add("Schema:name", xsd)
        AddHandler settings.ValidationEventHandler, AddressOf MyValidationEventHandler

        Dim v = XmlReader.Create(xml, settings)

        While (v.Read())

        End While

        If isValid Then
            Console.WriteLine("Document is valid")
        Else
            Console.WriteLine("Document is invalid")
        End If
    End Sub



    Public Sub MyValidationEventHandler(ByVal sender As Object, ByVal args As ValidationEventArgs)
        isValid = False
        Console.WriteLine("Validation eventn"   args.Message)
    End Sub
End Module
  

Комментарии:

1. Спасибо! Но в строке: настройки. Schemas.Add(«Schema:name», xsd) Я должен поместить URI в схему, я хочу использовать строку с xsd. Как я могу это сделать?

2. В имеющейся у вас строке xsd у вас должно быть пространство имен xmlns=»urn:bookstore-schema», вы должны очень легко это получить. Имя схемы xsd и имя схемы xml должны совпадать в любом случае, иначе xml никогда не будет проверяться, я думаю.

3. В моем xsd у меня есть xmlns: ttset=» ttset.com/or » xmlns:xs=» w3.org/2001/XMLSchema «. Что я должен использовать?

4. первый, подробнее об этом здесь msdn.microsoft.com/en-us/library /…