Delphi 7验证XML合法性(利用DTD、XSD)
2011-10-10 19:03
549 查看
拥有正确语法的XML被称为“形式良好”的XML。通过DTD验证的XML是“合法”的XML。DTD(文档类型定义)的作用是定义XML 文档的合法构建模块。它使用一系列的合法元素来定义文档结构。XML Schema是基于XML的DTD替代者。XML Schema描述XML文档的结构。XML Schema语言也称作XML Schema定义(XML Schema
Definition,XSD)。
PowerDesigner是Sybase公司的CASE工具集,也可以用来设计XML模型。在这里我使用PowerDesigner来设计XSD,使用版本15.3.0.3248。菜单"File"→"New Model"→"Model types"→"XML Model"→"XML Model Diagram",在下面的"Model
Name"输入模型名称,"XML Language"选择"XML Schema Definition 1.0",如下图所示:
在这里为简单测试,只做一个很简单的模型,假如我们要为一个XML测试元素的内容是否是规定的整型时,即要测试的XML如下:
新建test.xml文件,粘贴上面内容,保存文件为"UTF-8"编码。测试目的是要能检测出<number>元素内容不是规定的整型。在PowerDesigner中,拖动"Palette"面板上的"Element"图标到模型图上,双击设置其"name"为"number","type"为"xs:integer",如下图所示:
右侧"Preview"页面可以预览XSD文本内容。在菜单"Language"→"Generate XML Schema Definition File",选择保存的路径"Directory",按"确定"生成XSD文件,打开生成的"XMLModel_test.xsd"文件,如下内容:
在Delphi 7中要验证XML的合法性,需要引用"MSXML2_TLB"单元,这个是通过菜单"Project"→"Import Type Library"→"Microsoft XML,v6.0(Version 6.0)",也就是"C:\WINDOWS\system32\msxml6.dll",然后点击"Create
Unit",就生成了"MSXML2_TLB.pas",如下图所示:
验证示例代码如下:
注意这是使用"msxml6"版本的,也打包进源码下载地址里面。在上面代码的基础上,一个GUI程序如下所示:
下载地址:http://dl.dbank.com/c02yqtgh32
http://download.csdn.net/detail/akof1314/3674176
Definition,XSD)。
PowerDesigner是Sybase公司的CASE工具集,也可以用来设计XML模型。在这里我使用PowerDesigner来设计XSD,使用版本15.3.0.3248。菜单"File"→"New Model"→"Model types"→"XML Model"→"XML Model Diagram",在下面的"Model
Name"输入模型名称,"XML Language"选择"XML Schema Definition 1.0",如下图所示:
在这里为简单测试,只做一个很简单的模型,假如我们要为一个XML测试元素的内容是否是规定的整型时,即要测试的XML如下:
1 2 | <?xml version="1.0" encoding="utf-8"?> <number>abcd</number> |
右侧"Preview"页面可以预览XSD文本内容。在菜单"Language"→"Generate XML Schema Definition File",选择保存的路径"Directory",按"确定"生成XSD文件,打开生成的"XMLModel_test.xsd"文件,如下内容:
1 2 3 4 5 6 | <?xml version="1.0" encoding="UTF-8" ?> <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="number" type="xs:integer"/> </xs:schema> |
Unit",就生成了"MSXML2_TLB.pas",如下图所示:
验证示例代码如下:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | uses MSXML2_TLB; procedure TForm1.btn_ValClick(Sender: TObject); var SchemaDoc, XmlDoc: IXMLDOMDocument2; SchemaCache: IXMLDOMSchemaCollection; Error: IXMLDOMParseError; begin //---------------加载数据------------------------ XmlDoc := CoDOMDocument60.Create; XmlDoc.async := False; XmlDoc.load('E:\练习\test.xml'); //---------------加载schema架构文档------------------------ SchemaDoc := CoDOMDocument60.Create; SchemaDoc.async := False; SchemaDoc.load('E:\练习\test\XMLModel_test.xsd'); //---------------注册架构缓存------------------------ SchemaCache := CoXMLSchemaCache60.Create; SchemaCache.add('', schemadoc); //---------------分配架构缓存到XML文档------------------------ XmlDoc.schemas := schemacache; //---------------验证和报告------------------------ Error := xmldoc.validate; if Error.errorCode <> S_OK then mmo1.Lines.Add(Error.reason) else mmo1.Lines.Add('验证成功'); end; |
下载地址:http://dl.dbank.com/c02yqtgh32
http://download.csdn.net/detail/akof1314/3674176
相关文章推荐
- Delphi 7验证XML合法性(利用DTD、XSD)
- DELPHI中调用XSD去验证XML的合法性
- C# 利用Xsd验证xml
- .Net里用XSD作XML合法性验证的代码片段
- 如何用 Visual C#.net 中的 DTD、 XDR,或 XSD 验证 XML 文档
- XML的DTD,XSD验证
- 通过xsd验证xml合法性的例子。有验证程序,xml和xsd文件
- 关于XML的验证(DTD与XSD)一点实践
- XSD 验证 xml 合法性
- C# 利用Xsd验证xml
- 注册 XML Catalog 解决 Eclipse 中 XML 验证时 dtd /xsd 实体未找到 或 连接主机超时的问题
- JAXP 利用xml schema 验证xml的合法性
- 对XML文件的重新认识,说说XML文件的二三事(二):两种验证模式-DTD和XSD
- 验证xml--xsd和dtd
- C# 利用Xsd验证xml
- JAVA使用JAXB框架根据schema.xsd文件验证XML合法性
- Dataset利用xsd读取xml,数值类型处理及验证
- C# 利用自带xsd.exe工具操作XML-如通过XML生成xsd文件
- delphi数字签名验证及能够获取数字签名文件信息(利用wintrust.dll的导出函数,翻译一下)
- XML DTD XSD XSL XDR描述