如何设置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
我使用以下代码验证 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