zoukankan      html  css  js  c++  java
  • Delphi 7验证XML合法性(利用DTD、XSD)

           拥有正确语法的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如下:

    1
    2
      <?xml version="1.0" encoding="utf-8"?> 
    <number>abcd</number> 

            新建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"文件,如下内容:

    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> 

            在Delphi 7中要验证XML的合法性,需要引用"MSXML2_TLB"单元,这个是通过菜单"Project"→"Import Type Library"→"Microsoft XML,v6.0(Version 6.0)",也就是"C:WINDOWSsystem32msxml6.dll",然后点击"Create 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:练习 est.xml'); 
     
      //---------------加载schema架构文档------------------------ 
      SchemaDoc := CoDOMDocument60.Create; 
      SchemaDoc.async := False; 
      SchemaDoc.load('E:练习 estXMLModel_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; 

            注意这是使用"msxml6"版本的,也打包进源码下载地址里面。在上面代码的基础上,一个GUI程序如下所示:

    下载地址:http://dl.dbank.com/c02yqtgh32   http://download.csdn.net/detail/akof1314/3674176

    http://blog.csdn.net/akof1314/article/details/6860264

  • 相关阅读:
    【从零开始学Spring笔记】Spring学习路线
    【从零开始学Java笔记】目录
    【超详细全过程】安装IntelliJ IDEA下载
    【超详细全过程】JavaEE 开发环境安装全过程(jdk+tomcat+eclipse)
    【超详细全过程】安装MySQL+Navicat
    Eclipse更新maven项目仓库依赖
    变量
    二进制
    JVM虚拟机查找类文件的顺序
    JRE、JDK概述
  • 原文地址:https://www.cnblogs.com/findumars/p/8456117.html
Copyright © 2011-2022 走看看