XML Schema语言是校验XML文档格式的标准。可以在VB6中使用XML Schema来验证XML的合法性。
这个例子演示了怎样使用Microsoft XML Parser 4.0来校验XML文件。首先,创建一个名为WellFormed.xsd的文件并向其添加如下代码:
<?xml version="1.0" ?> <xs:schema targetNamespace="http://tempuri.org/WellFormed.xsd" xmlns="http://tempuri.org/WellFormed.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified"> <xs:element name="Test"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
然后,创建一个名为Wellformed.xml的文件并向其添加如下代码:
<?xml version="1.0" encoding="utf-8"?> <Test xmlns="http://tempuri.org/WellFormed.xsd"> <Name>John Doe</Name> <Temp/> </Test>
这份XML与上面的schema并不相符,因此在校验时会引起一个错误。
要校验该XML文档,需要创建一个XMLSchemaCache对象的实例。这个对象拥有一个XML schema的集合,通过调用Add方法并提供schema的命名空间和其URL或文件路径可以向该集合添加内容。(示例代码在可执行程序路径下寻找上面创建的文件。)
Dim xmlSchema As MSXML2.XMLSchemaCache40
Set xmlSchema = New MSXML2.XMLSchemaCache40 xmlSchema.Add "http://tempuri.org/WellFormed.xsd", _ App.Path & "\WellFormed.xsd"
然后创建并初始化一个XML DOMDocument对象实例。XMLSchemaCache与DOMDocument相互关联:
Dim xmlMessage As MSXML2.DOMDocument40 Dim lngErrCode As Long
Set xmlMessage = New MSXML2.DOMDocument40 xmlMessage.async = False xmlMessage.validateOnParse = True xmlMessage.resolveExternals = False Set xmlMessage.schemas = xmlSchema
装载完XML文档后,调用DOMDocument的Validate方法。如果校验过程中发现与schema不符,会产生一个解析错误:
Call xmlMessage.Load(App.Path & "\WellFormed.xml") lngErrCode = xmlMessage.Validate() If xmlMessage.parseError.errorCode <> 0 Then Text1.Text = " Reason: " & xmlMessage.parseError.reason End If
在解析WellFormed.xml文档时会引起一个解析错误。要纠正该错误,因该从文件中删除<Temp/>标签。 |