如何设置DOMDocument60.ValidateNode使用的代理?

How to set the proxy used by DOMDocument60.ValidateNode?

我使用以下代码验证 VBA 中的 xml 文件:

    Dim dParseError As MSXML2.IXMLDOMParseError
With New MSXML2.DOMDocument60
    Call .Load("C:\Temp\mySample.xml")
    Set dParseError = .validateNode(.ChildNodes.item(1))
    If dParseError.ErrorCode <> 0 Then
        Call msg_error_norm(ModuleName, FunctionName, "Error " & dParseError.ErrorCode & ": '" & dParseError.Reason & "' in XML-Vaidate.")
    End If
End With

但似乎验证无法正确验证位于 xsi:schemaLocation="http://..." 位置的模式。由于我们的代理配置,这不起作用(至少这是我怀疑的)。

那么如何设置.validateNode使用的代理(如果可能的话阅读自动配置)?

好像不需要设置代理。相反,您必须将 Schema 单独加载到 XMLSchemaCache 中并在 DOMDocument 中进行设置。

Dim dParseError As MSXML2.IXMLDOMParseError
Dim dSchemaCache As MSXML2.XMLSchemaCache60 
With New MSXML2.DOMDocument60
    Set dSchemaCache = New MSXML2.XMLSchemaCache60
    Call dSchemaCache.Add("http://myNamespace/Schema", "http://www.locationOfTheSchema.at/GBS/Sample.xsd")
    Call .Load("C:\Temp\mySample.xml")
    Set dParseError = .validateNode(.ChildNodes.item(1))
    If dParseError.ErrorCode <> 0 Then
        Call msg_error_norm(ModuleName, FunctionName, "Error " & dParseError.ErrorCode & ": '" & dParseError.Reason & "' in XML-Vaidate.")
    End If
End With