基于VB的XML校验实现

来源:互联网 发布:ccer数据库 中标 编辑:程序博客网 时间:2024/05/21 00:53

 打开Visual Basic 6.0,选择Standard EXE新项目
在Project菜单中选择References.
在Available References列表中选择Microsoft XML,v4.0
给Form1添加一个Command button
存储该项目

在XML编辑器中输入以下XML代码,并且存为books.xml:

<?xml version="1.0" encoding="gb2312"?>
<x:catalog xmlns:x="urn:books" >
<x:book id="bk101">

<x:author>Gambardella,Matthew</x:author>
<x:title>xml developer's guide</x:title>
<x:genre>Computer</x:genre>
<x:price>44.95</x:price>
<x:publish_date>2000-10-01</x:publish_date>
<x:description>An in-depth look at XMl</x:description>
</x:book>
</x:catalog>

以下代码建立books.xsd

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 targetNamespace="urn:books"   xmlns="urn:books"   elementFormDefault="qualified">
<xsd:element name="catalog" type="CatalogData"/>
<xsd:complexType name="CatalogData">
<xsd:sequence>
<xsd:element name="book" type="bookdata" minOccurs="0" maxOccurs="unbounded"/>

</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="bookdata">
<xsd:sequence>
<xsd:element name="author" type="xsd:string"/>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="genre" type="xsd:string"/>
<xsd:element name="price" type="xsd:float"/>
<xsd:element name="publish_date" type="xsd:date"/>
<xsd:element name="description" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string"/>
</xsd:complexType>
</xsd:schema>

在VB中,拷贝下面的代码到Command1_Click过程中:

Private Sub Command1_Click()
Dim xmlschema As MSXML2.XMLSchemaCache40
Set xmlschema = New MSXML2.XMLSchemaCache40
xmlschema.Add "urn:books", App.Path & "/books.xsd"
Dim xmldom As MSXML2.DOMDocument40
Set xmldom = New MSXML2.DOMDocument40
Set xmldom.schemas = xmlschema


xmldom.async = False
xmldom.Load App.Path & "/books.xml"

If xmldom.parseError.errorCode <> 0 Then
MsgBox xmldom.parseError.errorCode & "" & xmldom.parseError.reason
Else
MsgBox "No Error"
End If
End Sub

执行该程序,然后点击Command1按钮,将返回"No Errors"消息框。

Notes:注意使用 MSXML2.XMLSchemaCache40,即Microsoft XML 4.0及以上 服务软件包。否则会出现架构中根元素的错误定义。

原创粉丝点击