• 售前

  • 售后

热门帖子
入门百科

Xml简介_动力节点Java学院整理

[复制链接]
David902 显示全部楼层 发表于 2021-8-19 19:42:25 |阅读模式 打印 上一主题 下一主题
XML(简介)
       XML(可扩展标记语言)在 20 世纪 90 年代后期登上舞台后,就不停是众多活动和狂热思考的焦点。XML 只是基于平常文本,但却提供了险些可以在任何两个应用程序间共享数据的方式。
       虽然 XML 在概念上很简朴,但对 XML 的处理却通常很烦琐(必要编写大量重复性的代码)和复杂(许多容易被忽视的细节导致错误)。     

什么时间利用 XML?
       什么时间在Web 应用程序中利用 XML?
      
  • 你必要处理已经保存在 XML 中的数据时。  
  • 你希望用 XML 保存数据并为将来大概的整合做准备时。(XML 在应用程序整合的场景中最有意义)  
  • 你希望利用依赖于 XML 的技术时。(Web 服务利用各种建立在 XML 上的标准)  
  • 注解:  
  •        必须明确的一个重要概念是,存储数据时必须决定两件事情:  
  • 确定命据布局化的方式(逻辑格式)  
  • 确定命据保存的方式(物理存储)
       XML 是格式的选择而不是存储的选择。也就是说,纵然你决定用 XML 保存数据,你还要决定是保存到数据库字段里,还是要插入到一个文件里,大概只是以字符串或其他对象的情势保存在内存中。

XML 简介
       XML 规范是由 W3C(World Wide Web Consortium)定义的一组指南,用于以纯文本的情势形貌布局化数据,一种基于尖括号间标签的标记语言。
       XML 没有一组固定的标签。相反,XML 是一种可用于创建其他标记语言的元语言。
       下面的文档体现一个保存产物类别的自定义 XML 格式:
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <productCatalog>
  3. <catalogName>Acme Fall 2015 Catalog</catalogName>
  4. <expiryDate>2015-01-01</expiryDate>
  5. <products>
  6.   <product id="1001">
  7.    <productName>Magic Ring</productName>
  8.    <productPrice>342.10</productPrice>
  9.    <inStock>true</inStock>
  10.   </product>
  11.   <product id="1002">
  12.    <productName>Flying Carpet</productName>
  13.    <productPrice>982.99</productPrice>
  14.    <inStock>true</inStock>
  15.   </product>
  16. </products>
  17. </productCatalog>
复制代码
      标签可以自由利用最能形貌你的数据的恣意名称,正是这种灵活性使得 XML 非常乐成。固然,灵活性也会有缺点。差异公司完全可用差异的标签名来形貌相似的数据,尽管全部应用程序都可以大概剖析 XML 数据,但数据的写入者和读取者必要对标签和布局告竣共识,才能使读取者可用表明数据并抽取有意义的信息。

XML 的优点
       本日,XML 比过去任何一天都更为有用。现代应用程序利用 XML 的利益有以下几点:
      
  • 顺应性。XML 无处不在,无论什么时间必要共享数据,XML 都会成为首选目标。  
  • 扩展性和灵活性。XML 不会强加任何数据语义的规则,实用于恣意数据的类型而且实现的代价很低。  
  • 相关标准和工具。XML 乐成的另一个缘故原由在于创建和处理 XML 的工具(剖析器)和相关标准(XML架构、XPath、XSLT)。如许险些每种语言的开发者都有现成的组件用于阅读 XML,按某种规则(被称作架构)验证 XML 的有用性,将 XML 转换格式等。
格式良好的 XML
       XML 是一个非常严格的标准,这种严格性是用于保存广泛的兼容性的。(臭名昭著的 HTML 语言就是在没有这种严格性标准下的产物)
       全部的 XML 剖析器都会实行一些根本的质量查抄。如果一个 XML 文档不能满意全部标准,它就会被彻底拒绝。否则,它就被以为是格式良好的。格式良好的 XML 未必就是精确的 XML ,比方含有错误数据,但 XML 剖析器可以大概剖析它。
       XML 文档必须满意下面这些条件才能被以为是格式良好的:
      
  • 每个开始标签必须有一个对应的结束标签  
  • 空元素必须以“/>”结束  
  • 元素可以嵌套但不能交织  
  • XML 是严格区分巨细写的,因此 <FirstName> 和 </firstName > 不能配对  
  • 一个元素不能有两个或更多的同名特性,但是可以嵌套多个同名的元素  
  • 一个文档只可以有一个根元素  
  • 全部特性在值的前后都要有引号  
  • 解释不能放入标签中(它们包罗在 <!-- 和  --> 标记中)
XML 命名空间
       随着 XML 标准的成长,已创建了数十种 XML 标记语言(通常叫做 XML 语法)。此中许多属于特定的行业、流程和信息类型。如果你必要同时组合两个具有相同名称元素的 XML 语法,会发生什么呢?另一个更典型的问题是怎样区分它们?
       办理办法在于 XML 命名空间标准。这个标准的焦点头脑是全部的 XML 标记语言都拥有可以大概唯一区分相关元素的命名空间。简朴的说,命名空间可以在整合时消除同名元素的歧义。
       全部的 XML 命名空间都利用 URI(Universal Resource Identifiers,统一资源标识符),一样平常看起来和网页的 URL 相似。比方,http://www.mycompany.com/mystandard 是一种典型的命名空间,但这不是须要的(也不应该被假设),命名空间可以是恣意文本序列,标准是为了确保它的唯一性。
       要指定某个元素属于特定的命名空间,只需在开始标签中参加 xmlns(XML Name Space)特性表明要利用的命名空间即可。比方,下面这个元素是http://mycompany/OrderML 命名空间的一部门。
  1. <order xmlns="http://mycompany/OrderML"></order>
  2.     你一定会厌倦在所有元素上加入这个特性的烦琐操作,幸好,如果像下面这样加入命名空间,它会成为所有子元素默认的命名空间:
  3. <product xmlns="http://mycompany/OrderML">
  4. <productName>Flying Carpet</productName>
  5. <productPrice>982.99</productPrice>
  6. <inStock>true</inStock>
  7. </product>
  8.     你还可以自定义命名空间前缀,在 xmlns 特性中插入一个冒号和一个你想用作前缀的字符:
  9. <ord:order xmlns:ord="http://mycompany/OrderML"
  10.       xmlns:cli="http://mycompany/ClientML">
  11. <cli:client>
  12.   <cli:firstName>...</cli:firstName>
  13.   <cli:lastName>...</cli:lastName>
  14. </cli:client>
  15. <ord:orderItem>...</ord:orderItem>
  16. <ord:orderItem>...</ord:orderItem>
  17. </ord:order>
复制代码
XML 架构
       XML 的灵活性也带来了一些问题。天下各地的开发人员都利用你的 XML 格式,怎样才能包管全部人都服从规则?
       办理办法是创建一个格式文档,它定义你的自定义标记语言的规则,它被称为架构。这些规则不会包括语法细节(那是 XML 标准所要规定的),架构文档必要定义的是符合你的数据类型的逻辑规则,它包括以下几项:
      
  • 文档词汇。它定义了哪些元素或特性的名字可以出如今你的 XML 文档中。  
  • 文档布局。它定义了标签放在哪儿,可以指定标签之间的次序,还可以指定某个元素可以出现的次数。  
  • 支持的数据类型。可以定义数据是文本,大概必须是可以剖析的数值数据、日期信息等。  
  • 允许的数据范围。可将数值限定在范围内,文本限定在特定长度内,逼迫正则表达式模式匹配,大概限定仅可以是某些特定的值。
       下面的这个 XML 架构定义了前面所示的产物类别规则:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. <xsd:element name="productCatalog">
  4.   <xsd:complexType>
  5.    <xsd:sequence>
  6.     <xsd:element name="CatalogName" type="xsd:string" />
  7.     <xsd:element name="expiryDate" type="xsd:date" />
  8.     <xsd:element name="products">
  9.      <xsd:complexType>
  10.       <xsd:sequence>
  11.        <xsd:element name="product" type="productType" maxOccurs="unbounded" />
  12.       </xsd:sequence>
  13.      </xsd:complexType>
  14.     </xsd:element>
  15.    </xsd:sequence>
  16.   </xsd:complexType>
  17. </xsd:element>
  18. <xsd:complexType name="productType">
  19.   <xsd:sequence>
  20.    <xsd:element name="productName" type="xsd:string" />
  21.    <xsd:element name="productPrice" type="xsd:decimal" />
  22.    <xsd:element name ="inStock" type="xsd:boolean" />
  23.   </xsd:sequence>
  24.   <xsd:attribute name="id" type="xsd:integer" use="required" />
  25. </xsd:complexType>
  26. </xsd:schema>
复制代码
      
  • 全部的架构文档都是以根元素 <schema> 开头的 XML 文档  
  • 全部可用的元素都已经在 XML 架构空间定义了(http://www.w3.org/2001/XMLSchema)  
  • 你的架构文档必须利用精确的命名空间名(前缀一样平常是 xsd 或 xs ,你也可以自定义)  
  • 在 <schema> 元素内,有两种类型的定义  
  • <element> 定义目标文档必须依照的布局  
  • <complexType> 定义文档布局较小的数据布局  
  • <element>标签是架构的焦点,同时它也是全部验证的出发点
       在这个示例中,<element>标签确定产物类别必须以一个叫做<productCatalog>的根元素开始。<productCatalog>元素内部是一个由3个元素构成的序列。第一个是<catalogName>,它包罗平常文本;第二个是<expiryDate>,它包罗符合日期出现规则的文本;第三个是<products>,它包罗<product>元素的列表。
       每个<product>元素都是一个复杂的类型,因此文档背面又利用<complexType>进行了定义。这个复杂类型(名为<productType>)由含有产物信息的 3 个元素所构成的序列构成。这些元素分别保存文本(<productName>)、十进制数(<productPrice>)、布尔值(<inStock>)。这个复杂类型还包括一个必须的特性 id。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作