现在的位置: 首页 > 综合 > 正文

在VB6中校验XML文档

2012年12月09日 ⁄ 综合 ⁄ 共 1598字 ⁄ 字号 评论关闭

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/>标签。

抱歉!评论已关闭.