【问题标题】:XML Schema Validation in VBA with muliple namespaces具有多个命名空间的 VBA 中的 XML 模式验证
【发布时间】:2018-04-15 16:20:56
【问题描述】:
我正在尝试针对具有 MSXML 6.0 DOM 的 .XSD 文件验证 .XML 文件,但在执行代码时出现错误。几年前,Tomalak 回答了一个类似的问题(stackoverflow.com/questions/11708492)。我想知道:如何将两个命名空间添加到以下代码 sn-p (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
任何帮助将不胜感激。
【问题讨论】:
标签:
xml
vba
validation
schema
【解决方案1】:
如下。这些在这种情况下不起作用,而只是向您展示如何添加以及添加的位置。我还没有完成你的其余代码。
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