XML Schema 与 XML DTD的技术比较与分析

XML之DTD与Schema XML之DTD与Schema 什么是格式良好的XML DTD Schema 1、什么是格式良好的XML a 有且只有一个根元素 b XML标签大小写正确区分 c 正确使用结束标签 d 正确嵌套标签 e 使用了合法的标签名 f 定义有效的属性 2、DTD DTD简介 DTD的方法及其元素限制 应用 1、DTD简介   DTD(Document Type Definition,文档类型定义) ... 阅读详情

引言
XML DTD(XML的文档类型定义)是近几年来XML技术领域所使用的最广泛的一种模式。但是,由于XML DTD并不能完全满足XML自动化处理的要求,例如不能很好实现应用程序不同模块间的相互协调,缺乏对文档结构、属性、数据类型等约束的足够描述等等,所以W3C于2001年5月正式推荐XML Schema为XML 的标准模式。显然,W3C希望以XML Schema来作为XML模式描述语言的主流,并逐渐代替XML DTD。那么XML Schema与XML DTD相比到底有哪些优势呢,XML DTD是否真的会在XML的模式描述领域中逐渐消失呢?

XML模式与XML格式
XML模式是指用来描述XML结构、约束等因素的语言,例如XML Schema、XML DTD、XDR,SOX等等。XML格式则是XML文档本身所具有的格式。本文以XML Schema来代表W3C所推荐的XML Schema模式标准,而以"XML模式"来代表所有的XML模式描述语言。

从模式的描述语言来说,XML Schema和XML DTD都属于语法模式。与概念模式不同,语法模式在对同一事物描述时,可以采用不同的语法,例如在对关系模式描述时,无论是使用XML Schema还是XML DTD,都既可以用元素也可以用属性来描述关系模式的列。

模式必须以某种格式来表示,XML Schema的格式与XML DTD的格式有着非常明显的区别,XML Schema事实上也是XML的一种应用,也就是说XML Schema的格式与XML的格式是完全相同的,而作为SGML DTD的一个子集,XML DTD具有着与XML格式完全不同的格式。这种区别会给XML Schema的使用带来许多好处:

XML用户在使用XML Schema的时候,不需要为了理解XML Schema而重新学习,节省了时间;
由于XML Schema本身也是一种XML,所以许多的XML编辑工具、API 开发包、XML语法分析器可以直接的应用到XML Schema,而不需要修改。

作为XML的一个应用,XML Schema理所当然的继承了XML的自描述性和可扩展性,这使得XML Schema 更具有可读性和灵活性。
由于格式完全与XML一样,XML Schema除了可以像XML一样处理外,也可以同它所描述的XML文档以同样的方式存储在一起,方便管理。
XML Schema与XML格式的一致性,使得以XML为数据交换的应用系统之间,也可以方便的进行模式交换。
XML有非常高的合法性要求,XML DTD对XML的描述,往往也被用作验证XML合法性的一个基础,但是XML DTD本身的合法性却缺少较好的验证机制,必需独立处理。XML Schema则不同,它与XML有着同样的合法性验证机制。

数据类型

或许,对于许多开发人员来讲,XML Schema与XML DTD相比的一个最显著的特征,就是其对数据类型的支持了。这完全是因为XML DTD提供的数据类型只有CDATA 、Enumerated、NMTOKEN 、NMTOKENS等十种内置(built-in)数据类型。这样少的数据类型通常无法满足文档的可理解性和数据交换的需要。XML Schema则不同,它内置了三十七种数据类型,如long,int,short,double等常用的数据类型,并通过将数据类型表示为由value space、lexical space和facet三部分组成的三元组而获得更大的灵活性。但是, XML Schema数据类型的真正灵活性来自于其对用户自定义类型的支持。XML Schema提供两种方式来实现数据类型的定义。

1)简单类型定义(simpleType),即在XML Schema内置的数据类型基础上或其它由XML Schema内置的数据类型继承或定义所得到的简单的数据类型(simpleType)基础上,通过restriction,list 或者 union方式定义新的数据类型。

例如:
源码1 restriction方式的定义
<simpleType name='Sku'>
<restriction base='string'>
<pattern value='/d{3}-[A-Z]{2}'/>
</restriction>
</simpleType>
 


源码2 list方式的定义
<simpleType name='listOfDouble'>
<list itemType='double'/>
</simpleType>
 


源码3 union方式的定义
<xsd:attribute name="size">
  <xsd:simpleType>
   <xsd:union>
    <xsd:simpleType>
     <xsd:restriction base="xsd:positiveInteger">
      <xsd:minInclusive value="1"/>
      <xsd:maxInclusive value="12"/>
     </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType>
     <xsd:restriction base="xsd:string">
      <xsd:enumeration value="month"/>
     </xsd:restriction>
    </xsd:simpleType>
   </xsd:union>
  </xsd:simpleType>
 </xsd:attribute>
 


2) 复合类型定义(complexType),该方法提供了一种功能强大的复杂数据类型定义机制,可以实现包括结构描述在内的复杂的数据类型。下面是一个以complexType定义实现关系模式中表结构的例子,设有表T_C_Type(Psign,Count),其中Psign为CHAR数据类型,Count为NUMBER数据类型。则有:

源码4 complexType定义
<!--表结构类型定义-->
 <complexType name="T_C_Type">
  <sequence minOccurs="0" maxOccurs="unbounded">
   <element name="Psign">
    <complexType>
     <simpleContent>
      <restriction base="string">
       <attribute name="value" type="string"/>
      </restriction>
     </simpleContent>
    </complexType>
   </element>
   <element name="Count" minOccurs="0">
    <complexType>
     <complexContent>
      <restriction base="anyType">
       <attribute name="value" type="int" use="optional"/>
      </restriction>
     </complexContent>
    </complexType>
   </element>
  </sequence>
 </complexType>
 


不仅如此,XML Schema还允许元素的内容取空值,这一点可以扩大XML Schema对数据情况的描述范围,而XML DTD则无能为力。例如:

源码5 XML Schema 元素取空值的定义 <element name='test' nullable='true'/>
 


元素顺序的支持
XML DTD与XML Schema 都支持对子元素节点顺序的描述,但XML DTD没有提供对于无序情况的描述,也就是如果以XML DTD来描述元素的无顺序出现情况,它必须采用穷举元素各种可能出现的排列顺序的方式来实现,这种方法不仅繁琐,有时甚至是不现实的。例如对于table的a,b子元素,如果希望它们以任意的顺序出现,用XML DTD来描述:

源码6 a,b子元素任意顺序出现的XML DTD定义
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT ENTER_NAME_OF_ROOT_ELEMENT_HERE EMPTY>
<!ELEMENT table ((a,b)|(b,a))>
<!ELEMENT a  (#PCDATA)>
<!ELEMENT b (#PCDATA)>

 


XML Schema提供了<all>标记来描述这种情况:

源码7 a,b子元素任意顺序出现的XML Schema定义
<xsd:element name="a" type="xsd:string"/>
 <xsd:element name="b" type="xsd:string"/>
 <xsd:element name="table">
  <xsd:complexType>
   <xsd:all>
    <xsd:element ref="a"/>
    <xsd:element ref="b"/>
   </xsd:all>
  </xsd:complexType>
 </xsd:element>
 


可见,用XML Schema来实现子元素的无序描述要简单的多。

命名空间
在XML中引入命名空间的目的是为了能够在一个XML文档中使用其它XML文档中的一些具有通用性的定义(通常是一些元素或数据类型等的定义),并保证不产生语义上的冲突。XML DTD并不能支持这一特性,这进一步限制了XML DTD的适用范围。而XML Schema则很好的满足了这一点。

并且, XML Schema还提供了include 和 import两种引用命名空间的方法。下面的例子中XML Schema文档引用了其它两个XML Schema的定义,通过使用import实现了混合使用不同命名空间的目的。例子中还定义了不同命名空间中元素之间的keyref约束。

源码8 XML Schema对命名空间的使用
schema targetNamespace="http://202.117.84.144"
xmlns:xs="http://202.117.84.144"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:a="http://202.117.84.228/middlewareSqlServer2000sqlservertest20211784228"
xmlns:b="http://202.117.84.228/middlewareOracle805ioracletest20211784144"
elementFormDefault="qualified">
<import namespace="http://202.117.84.228/middlewareSqlServer2000sqlservertest20211784228"
 schemaLocation="F:/xml schema/middlewareSqlServer2000sqlservertest20211784228.xsd"/>
<import namespace="http://202.117.84.228/middlewareOracle805ioracletest20211784144"
 schemaLocation="F:/xml schema/middlewareOrcal805ioracletest20211784144.xsd"/>
 <annotation>
  <documentation xml:lang="cn">
   schema for Middleware
   Copyright 2001 Zhou Jingtao. All rights reserved.
  </documentation>
 </annotation>
 <element name="CombineDatabase">
  <complexType>
   <sequence>
    <element name="CombinGlobeSchema">
     <complexType>
      <sequence>
       <element ref="a:H-Database"/>
       <element ref="b:H-Database"/>
      </sequence>
     </complexType>
     <keyref name="SqlServerTest_T_C_Psign" refer="b:gz_jgxx_ID_pk">
      <selector xpath="a:H-Database/a:SqlServerTest/a:T_C/a:Count"/>
      <field xpath="@value"/>
     </keyref>
    </element>
   </sequence>
  </complexType>
 </element>
</schema>
 


对于API的支持
在掌握和使用XML技术时,DOM和SAX可能是技术人员最常使用到的XML API。DOM和SAX只对XML实例文档有效,虽然可以通过它们实现以XML DTD来验证XML文档,但是DOM和SAX却没有提供解析XML DTD文档内容的功能,也就是说我们无法通过DOM或SAX来得到DTD中元素、属性的声明和约束的描述。但是在基于XML+DTD的数据交换过程中,一些应用程序需要得到DTD本身的描述内容和结构,以方便对XML文档中数据的处理,例如在使用关系数据库存储XML 文档的过程中就涉及到如何将XML DTD映射为关系模式描述的问题。为了实现对XML DTD的解读,研究人员必须为XML DTD开发新的接口或者专用工具,带来了很大的不便。

由于XML Schema本身就是一个XML 文档,所以我们可以通过使用DOM、SAX或JDOM等XML API很容易的解析XML Schema,这就实现了XML文档与其描述模式处理方式的一致性,利于数据的传输和交换。

更加清晰的属性出现情况的限制、以及缺省值和枚举
XML DTD以关键字#IMPlIED、#FIXED和#REQUIRED来指定属性是否出现,并支持属性缺省值的定义。XML Schema则提供了更明确的标记来实现清晰易懂的表示。XML Schema废弃了XML DTD的#IMPlIED,不再支持属性的隐含状态,而要求必须给出明确的状态,并以prohibited来表示属性的禁用。对于缺省值的表达则更为直观,用default来直接给出。

源码9 XML DTD 、XML Schema对属性出现情况的限制
<!ATTLIST TestDTD testAr1 CDATA  #IMPLIED>
<!ATTLIST TestDTD testAr2 CDATA  #REQUIRED>
<!ATTLIST TestDTD testAr3 CDATA  #FIXED "3">
<!ATTLIST TestDTD testAr4 CDATA  "3">

<xsd:attribute name="TestAr1" type="xsd:string" use="optional" default="3"/>
<xsd:attribute name="TestAr2" type="xsd:string" use="prohibited"/>
<xsd:attribute name="TestAr3" type="xsd:string" use="required" fixed="3"/>
 


对于XML Schema在枚举方面的改进,请参见参考资料中"XML 问题 #7 W3C XML Schema 与文档类型定义 (DTD) 比较"一文(文献9)。

注释
XML DTD和XML Schema都支持<!-注释内容-->这样的注释方法,但是XML Schema提供了更灵活和有用的注释方式:documentation和appinfo。它们提供了面向读者和应用的注释。

源码10 XML Schema的注释
<xsd:annotation>
<xsd:documentation>面向用户和应用的注释</xsd:documentation>
<xsd:appinfo>
//这是一段C语言代码。
#include stdio.h
void main()
{
int i,j;
i =1;
j=i+1;
}
</xsd:appinfo>
 


对数据库的支持
目前如何将关系数据表示为XML数据和如何实现基于关系数据库的XML数据存储、查询和更新已经成为了研究的热点。Deutsh,Florescu[5],Kossman[5],Shanmugasundaram[6,7]和D W Lee[8]等人都在XML与关系数据的相互转化问题方面作了较深入的研究。然而由于XML Schema成为正式推荐标准的时间较晚,加之XML DTD语法相对简单,所以现在大部分的研究和应用都是基于XML DTD展开的。但是,XML DTD在对关系数据的描述方面明显存在着不足,例如XML DTD有限的数据类型根本无法完成对关系数据数据类型的一一映射,也无法实现大部分的数据规则的描述。XML Schema提供了更多的内建数据类型,并支持用户对数据类型的扩展,基本上满足了关系模式在数据描述上的需要,这一点可以作为XML Schema比XML DTD更适合描述关系数据的一个主要的原因。

一个结论
通过比较,可以看出,XML Schema比XML DTD具有更强的表现力,能够更好的满足不同领域应用的需求。那么,是不是可以说XML DTD会很快被XML Schema替代并最终消失呢。从作者的观点来看,XML Schema虽然在大多数的应用领域都有替代XML DTD的趋势,但是XML DTD仍然有它的适用范围,并不可能被XML Schema完全替代:

XML DTD是作为XML 标准的一部分发布的,W3C似乎并没有准备将其从XML标准中废除掉,对于XML DTD的支持还将持续。
目前大多数的面向XML应用,都对XML DTD做了很好的支持,XML DTD的工具也相对较为成熟,一般情况下,这些应用和工具并不会选择以XML Schema替换XML DTD的方式对其升级,更多的选择应该是二者都支持。当然,对于那些对数据交换或者描述能力要求较高、XML DTD已不能满足功能需求的应用来说,以XML Schema来代替XML DTD已经成为一种必然趋势。
当前大多数与XML 模式相关的算法研究都是基于XML DTD展开的,作为一种研究的延续,并不会放弃XML DTD的研究成果,但是,针对XML Schema的研究将会成为一个新的热点。
在一些相对要求简单的处理环境中,XML DTD仍然会占有它的一席之地。
同其他技术的发展一样,由于新标准的出现,XML DTD的作用会逐渐减弱,但正如层次数据库在今天仍然在使用一样, 对XML Schema是否会完全替代XML DTD做一个结论似乎为时过早。

所以,作为一种强有力的标准,XML Schema作为XML模式的主流已经成为一种趋势;但作为一种最简单的XML模式,XML DTD也还将会在一段时间内发挥它应有的作用。

参考资料

Fallside D C. XML Schema Part 0: Primer. http://www.w3.org/TR/xmlschema-0, 2001.5 XML Schema 标准的总体介绍。
Thompson H,et al . XML Schema Part 1: Structures. http://www.w3.org/TR/xmlschema-1, 2001.5 XML Schema的结构标准
Biron P V, Malhotra A. XML Schema Part 2: Datatypes. http://www.w3.org/TR/xmlschema-2, 2001.5 XML Schema的数据类型标准。
Lee D W, Chu W W. Comparative Analysis of Six XML Schema Languages.ACM SIGMOD Record, 2000.9,29(3): 76~87 该文对XML 模式中的XML DTD , XML Schema , XDR , SOX , Schematron, DSD作了详细的比较,其中对于XML Schema的论述,由于当时XML Schema标准还未定稿,所以与最新的标准相比有些出入。
Florescu D, Kossman D. Storing and Querying XML Data Using a RDBMS. IEEE Data Engineering Bulletin, 1999,22(3): 27~34 研究了如何利用RDBMS实现XML数据的存储和查询。
Shanmugasundaram J, et al..Efficiently Publishing Relational Data as XML Documents..The VLDB Journal, 2000, 65~76 提出了一种基于SQL语言的的关系数据到XML的有效发布方法。
Shanmugasundaram J,et al.Querying XML Views of Relational Data.The VLDB Journal, 2001, 261~270提出了用来实现复杂XQuery的框架结构,研究如何提高XML视的查询效率。
Lee D W, Chu W W. Constraints-preserving Transformation from XML Document Type Definition to Relational Schema.International Conference on Conceptual Modeling / the Entity Relationship Approach, 2000, 323~338 详细论述了XML DTD到关系模式的映射算法CPI。
David Mertz ,W3C XML Schema 与文档类型定义 (DTD) 比较,http://www-900.ibm.com/developerworks/cn/xml/xml-matters/x-matters7.shtml。
 

语义网简介(二)—XML与XML Schema XML第一印象XML是extensible markup language的缩写,是一种使用配对的可嵌套的标签的标记语言。人们用XML将文档结构化,从而可以让机器解读。作为不同应用之间统一的数据交换格式,XML广泛的应用在数据传输上。XML的组成XML文档 = 序言 + 很多元素 +尾注(可选)序言序言 = XML声明(文档版本号,字符编码) + 外部结构化文档的引用(可选) 一个序言的例子 阅读详情

相关推荐

20、XML技术全面解析与应用实践

本博客全面解析了XML技术在数据传输与处理中的核心作用,详细探讨了XML在产品集成、跨浏览器转换、动态数据处理、数据库映射、语音交互以及模式定义等领域的应用实践。文章介绍了XML Schema的强大功能,如强类型支持和外键机制,并通过WAP脚本示例展示了XML在实际场景中的使用。此外,还总结了XML技术的优势,并展望了其未来发展趋势,为读者深入理解和应用XML技术提供了全面指导。

v4w5x6的博客 98

XML中的Schema与DTD

DTD和Schema两者都是对XML文档做进一步的限制。 DTD的概念 DTD的作用是定义XML的合法构建模块,它使用一系列的合法元素来定义文档结构。 作用: 1、定义XML文档的结构 2、为XML文档提供语法与规则 3.、内容既可以定义在XML文档之内,也可以定义在XML文档之外 4、DTD对于XML是可选的内容 5、一个XML只能有一个相对应的DTD Schema的概念 S...

孙晴 548

Allegro17.2 出gerber文件详细流程 - 干货

Allegro17.2 出gerber文件详细流程 - 干货

u010614434的博客 1万+

XML文件定义(DTD/schema)

XML文件定义DTD/schema一、XML文件的定义结构,任何一个文件的定义都是要遵循一个规范和约束的二、XML特点三、使用DTD定义xml(通过 DTD 验证的 XML 是“合法”的 XML)3.1、DTD 的作用是定义 XML 文档的结构3.2、内部的 DOCTYPE 声明3.3、外部文档声明四、XML 文档(以及 HTML 文档)均由以下构建模块构成4.1、元素*4.2、属性4.3、实体4...

HDMI小不点 1692

STM32Cubemx+CanFestival:从零到一的CANopen移植实战

本文详细介绍了如何使用STM32CubeMX和CanFestival实现CANopen协议栈的移植,从开发环境搭建到核心配置步骤,再到调试与问题排查。通过实战经验分享,帮助开发者快速掌握STM32与CANopen的结合应用,提升嵌入式系统开发效率。

weixin_42558093的博客 421

Ubuntu 22.04下Realtek R8125网卡驱动安装避坑指南(附DKMS自动编译配置)

本文详细介绍了在Ubuntu 22.04系统上为Realtek R8125 2.5GbE网卡安装驱动的完整流程与避坑指南。针对内核通用驱动r8169的冲突问题,重点讲解了如何通过DKMS(Dynamic Kernel Module Support)实现驱动的持久化自动编译与安装,确保系统内核升级后网卡驱动依然有效。内容包括环境准备、驱动源码获取、DKMS标准配置、驱动冲突解决(设置黑名单)以及日常维护与故障排查方法,旨在为用户提供一个一劳永逸的稳定解决方案。

echo99的专栏 1023

XML( 可扩展标记语言),文件约束(DTD(.dtd)),Schema(.xsd))

XML是什么: 英文:XML eXtensible Markup Language 可扩展标记语言 用于配置文件,传递数据。 可拓展: 标签名可以自定义。 标记: 标签,这门语言由标签构成。 XML特点: 区分大小写,&amp;lt; abc&amp;gt;或&amp;lt; ABC&amp;gt;是不同的两个标签, 语法严谨,标签开头和结尾必须严格配对 所有的标签都是人为创造的,可以扩展。 XML有什么用: 可...

夜一 1076

信创那些事儿——Spring Boot中集成东方通中间件(TongWeb)

在Spring Boot中集成东方通中间件(如TongWeb作为Servlet容器)通常涉及几个步骤,但需要注意的是,TongWeb本身是一个独立的Java EE应用服务器,而不是像Tomcat那样可以直接嵌入到Spring Boot应用中的中间件。因此,集成通常意味着将Spring Boot应用打包为WAR文件并部署到TongWeb服务器上。

来北欧写代码 6492

XML Schema 与 XML DTD的技术比较与分析(转)

XML DTD是目前使用最广泛的一种XML 模式,XML Schema则已经成为W3C的正式推荐标准,并有替代XML DTD的趋势。那么,从技术角度看,XML Schema与XML DTD有那些区别,XML Schema又有那些优势呢?引言 XML DTD(XML的文档类型定义)是近几年来XML技术领域所使用的最广泛的一种模式。但是,由于XML DTD并不能完全满足XML自动化处理的要求,例如不能

buaastone的专栏 940

YOLOv8【第十二章:数据增强与数据工程篇·第10节】主动学习(Active Learning):如何挑选最有价值的样本进行标注!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 509

C# 动态壁纸实战:7步带你从零开始制作动态壁纸

动态壁纸是指在计算机桌面上播放视频、动画或交互式内容的一种技术。与传统的静态壁纸相比,动态壁纸更加生动有趣,可以大大提升桌面的观赏性和互动性。通过本文的详细讲解和代码示例,相信你已经学会了如何使用C#实现动态壁纸。动态壁纸不仅能够提升桌面的美观度,还能展示你的编程技能。希望这篇教程对你有所帮助,期待你在C#编程中取得更大的成就!🌟✨如果你有任何问题或建议,欢迎在评论区留言交流!希望这篇教程对你有所帮助,期待你在C#编程中取得更大的成就!😊✨😊✨。

java专栏 1673

xml数据有效性(xml Schema)

xml数据有效性(xml Schema) XML Schema 与 XML DTD的技术比较与分析 http://www-900.ibm.com/developerWorks/cn/xml/x-sd/index.shtml验证XLM数据合法性(上)http://ww...

weixin_30484247的博客 103

把 SAP S/4HANA 中的 Maintain Email Templates 用好:从模板维护、语言变体、业务绑定到传输治理的完整实践

摘要:SAP邮件模板管理常被低估,实则关乎审批通知、业务提醒等关键输出。官方推荐通过复制标准模板实现自定义,而非直接修改标准内容,以保持核心稳定。模板维护涉及语言变体、业务绑定、数据传输等治理环节,需业务顾问与开发团队协作确保字段来源与渲染逻辑。实施时需注意Fiori配置、权限分配及传输管理,避免测试与生产环境差异。模板设计应平衡灵活性与复杂度,遵循分层测试策略(内容、数据、流程),并建立命名规范以维护资产清晰度。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 68

XML DTD和XML Schema

每天都在用xml, 可是却一直没有去深入了解一下DTD和Schama, 当然我觉得很大一个原因是因为不需要, 本人从事web开发3年多也只有一次修改DTD文件的机会. 周末无意间翻看了一下张孝祥的书, 再到w3school上读了两边, 总算略知一二, 关键点记录下来, 以为纪念.

sunxing007的专栏 1万+

《FPGA DDR3权威实战:从基础到高速故障录波系统》专栏导览:从不知所措到心中有数

本文是一份DDR3实战指南,作者从自身学习经历出发,分享了一套循序渐进的DDR3应用路线图。专栏包含12篇文章,从基础配置(MIG IP核、AXI总线)、仿真测试到实际项目应用(功能测试、性能测试),最后深入原生MIG接口实战,通过一个高速故障录播系统案例完整展示DDR3开发流程。文章特别强调实践性,旨在帮助读者系统掌握DDR3开发技能,避免作者当年踩过的坑。每篇都配有优快云链接,适合FPGA开发者按顺序学习参考。

FPGA_小田老师的博客 331

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: XML文件的读取用XmlDocument和XmlReader的比较
下一篇: .C#可否对内存进行直接的操作
NETZHOU
博客等级 码龄24年 10粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值