具有多个命名空间的 VBA 中的 XML 架构验证



我正在尝试.XML根据 .带有MSXML 6.0 DOM的XSD文件,但在执行代码时出现错误。托马拉克几年前(stackoverflow.com/questions/11708492(对一个类似的问题有过答案。我想知道:如何将两个命名空间添加到以下代码片段(objSchemaCache.Add ...

Sub XSD_Validation()
    Dim xmlDoc As MSXML2.DOMDocument60
    Dim objSchemaCache As New XMLSchemaCache60
    Dim objErr As MSXML2.IXMLDOMParseError
    objSchemaCache.Add "http://somewhere.com/root", LoadXmlFile("I:Test.xsd")
    Set xmlDoc = LoadXmlFile("I:Test.xml")
    Set xmlDoc.Schemas = objSchemaCache
    Set objErr = xmlDoc.Validate()
    If objErr.errorCode = 0 Then
        Debug.Print "No errors found"
    Else
        Debug.Print "Error parser: " & objErr.errorCode & "; " & objErr.reason
    End If
End Sub

任何帮助将不胜感激。

如下所述。这些在这种情况下不起作用,而只是向您展示如何添加以及添加位置。我还没有浏览你的其余代码。

Sub XSD_Validation()
    Dim xmlDoc As MSXML2.DOMDocument60
    Dim objSchemaCache As New XMLSchemaCache60
    Dim objErr As MSXML2.IXMLDOMParseError
 '   objSchemaCache.Add "http://somewhere.com/root", LoadXmlFile("I:Test.xsd")
    Set xmldoc = New MSXML2.DOMDocument60
    xmldoc.setProperty "SelectionNamespaces", xmlNamespace
    xmldoc.setProperty "SelectionLanguage", "XPath"
    xmldoc.setProperty "SelectionNamespaces", "xmlns:content=""http://www.w3.org/2005/Atom"""
    xmldoc.setProperty "SelectionNamespaces", "xmlns:other=""http://www.other.org/other/other"""
    Set xmlDoc = xmlDoc.LoadXML("I:Test.xml")
    Set xmlDoc.Schemas = objSchemaCache
    Set objErr = xmlDoc.Validate()
    If objErr.errorCode = 0 Then
        Debug.Print "No errors found"
    Else
        Debug.Print "Error parser: " & objErr.errorCode & "; " & objErr.reason
    End If
End Sub

最新更新