【问题标题】:Validate xml as memorystream against xsd as string将 xml 验证为内存流,将 xsd 验证为字符串
【发布时间】:2011-10-07 08:10:48
【问题描述】:

我想针对 XSD (VB.NET) 验证 xml。我的函数如下所示:

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

当我的 xml 是内存流/流(我使用流,因为我不需要存储 xml)并且我的 xsd 是字符串(我从网络服务获取我的 xsd 作为字符串时,我该如何进行验证,我不需要将它存储在文件中)?

非常感谢大家的帮助!

【问题讨论】:

    标签: xml vb.net validation 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 event\n" + args.Message)
        End Sub
    End Module
    

    【讨论】:

    • 谢谢!但在这一行:settings.Schemas.Add("Schema:name", xsd) 我必须将 URI 放入架构中,我想将字符串与 xsd 一起使用。我该怎么做?
    • 在你拥有的 xsd 字符串中,你应该有命名空间 xmlns="urn:bookstore-schema" 你应该很容易就能得到它。我认为 xsd 架构名称和 xml 架构名称应该匹配,否则 xml 将永远不会验证。
    • 在我的 xsd 中有 xmlns:ttset="ttset.com/or" xmlns:xs="w3.org/2001/XMLSchema"。我应该使用什么?
    • 第一个,在这里阅读更多信息msdn.microsoft.com/en-us/library/…
    猜你喜欢
    • 2013-07-30
    • 2014-05-08
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    相关资源
    最近更新 更多