在VB6中校验XML文档
2004-11-14 10:11
337 查看
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/>标签。
这个例子演示了怎样使用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/>标签。
相关文章推荐
- 通过程序校验xml文档学习笔记
- 采用Xerces C++执行基于schema的XML文档校验
- 对XML文档进行Schema校验的方法(适用于Framework2.0及以上版本)
- JAXP对xml文档进行DOM解析
- XML文档数据库--schema约束简单演示
- 使用.NET中的XML注释(二) -- 创建帮助文档入门篇
- Pull解析完成XML文档的输出
- XML 解析XML文档 XML约束
- XPath查询XML文档的注意事项
- Ant构建原理及build.xml文档描述
- dom4j生成XML文档及解析
- 利用VC++与MSXML解析XML文档
- C#操作XML文档(2)-使用linq to xml
- Struts2校验框架,有效的xml(字段优先)
- lucene 索引非txt文档 (pdf word rtf html xml)
- Objective-C ,ios,iphone开发基础:使用GDataXML解析XML文档,(libxml/tree.h not found 错误解决方案)
- XML文档类型定义DTD
- dom4j生成或解析xml文档
- 用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC)
- Excel 此文档中包含宏、ActiveX 控件、XML扩展包信息或 Web组件,其中可能包含个人信息,并且这些信息不能通过‘文档检查器’进行删除。”