1、why xml?


如果说JSON是一种轻量级的数据交换格式,那么xml就是重量级的。xml应用于web开发的许多方面,常用于简化数据的存储和共享。永远要记住,xml跟JSON一样是用来存储传输数据的,而非显示数据,显示数据是html干的活。

xml是不作为的,xml不会做任何事情,它仅仅是纯文本,是包装在xml标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。

举个简单的例子,博客园的文章备份就是用xml存储的(存储的仅仅是纯文本),一旦需要就把它上传,博客园服务器应该会有个解析器解析该文件(xml文档需要软件解析)。

2、一个简单的xml文档


<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

我们看到以上的代码,是John给George的一个便签,被存储为.xml后缀的文件。前面说过,xml用于数据的储存和传输,所以当George收到文件时,就会用特定的解析器去解析(可能生成html文件),这样就会直观地显示数据。

接着来分析下以上xml文件的构成。

第一行是xml声明。它定义xml的版本(1.0)和所使用的编码 (ISO-8859-1 = Latin-1/西欧字符集)。

下一行描述文档的根元素(像在说:“本文档是一个便签”):

<note>

接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body):

<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>

最后一行定义根元素的结尾:

</note>

xml文档形成了一个树结构(和html的dom树类似),xml文档必须包含根元素,该元素是其他所有元素的父元素。

3、xml语法


xml语法很简单,特别是针对有强迫症的童鞋。

  1. 所有 XML 元素都须有关闭标签
  2. XML 标签对大小写敏感,必须使用相同的大小写来编写打开标签和关闭标签
  3. XML 必须正确地嵌套
  4. XML 文档必须有根元素
  5. XML 的属性值须加引号
  6. 实体引用
  7. XML 中的注释
  8. 在 XML 中,空格会被保留

这里解释下6、7、8,5可以参考下一小节。

  • 实体引用:

在xml中,一些字符拥有特殊的意义。如果你把字符<放在xml元素中,会发生错误,这是因为解析器会把它当做新元素的开始。比如这样:

<to> < George</to>

为避免这样的错误,使用实体引用来代替<字符:

<to> &lt; George</to>

在xml中,有5个预定义的实体引用。只有字符 "<" 和 "&" 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。

  • xml中的注释:

在xml中编写注释的语法和HTML的语法类似:

<!-- <to>George</to> -->
  • 在xml中,空格会被保留:

HTML会把多个连续的空格字符裁减(合并)为一个,但是xml文档中的空格会被保留(尽管在浏览器中没有显示):

文档中: <name>    Han     Zichi    </name>
实际显示: <name>Han Zichi</name>

4、xml元素


xml元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。

<bookstore>
  <book category="CHILDREN">
    <title>Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="WEB">
    <title>Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore> 

在上例中,<bookstore><book> 都拥有元素内容,因为它们包含了其他元素。<author> 只有文本内容,因为它仅包含文本。在上例中,只有 <book> 元素拥有属性 (category="CHILDREN")

XML 命名规则:

  1. 名称可以含字母、数字以及其他的字符
  2. 名称不能以数字或者标点符号开始
  3. 名称不能以字符 “xml”(或者 XML、Xml)开始
  4. 名称不能包含空格
  5. 推荐用下划线_来命名,比如<book_title>

可使用任何名称,没有保留的字词。

5、xml属性


xml元素可以在开始标签中包含属性,类似HTML,属性值必须被引号包围(单引双引均可)。属性(Attribute)提供关于元素的额外(附加)信息。

属性通常提供不属于数据组成部分的信息。在下面的例子中,文件类型与数据无关,但是对需要处理这个元素的软件来说却很重要:

<file type="gif">computer.gif</file>

xml元素 vs 属性:

<person sex="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person> 

<person>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person> 

在第一个例子中,sex 是一个属性。在第二个例子中,sex 则是一个子元素。两个例子均可提供相同的信息。没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。我的经验是在 HTML 中,属性用起来很便利,但是在 XML 中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧。

xml入门的更多相关文章

  1. sql xml 入门

    /*sql xml 入门:    --by jinjazz    --http://blog.csdn.net/jinjazz        1.xml:        能认识元素.属性和值      ...

  2. xml入门简介--两天学会xml

    前言 在很久以前,笔者曾见到过1000+页的xml书,里面还有n多的概念,XSL,Xquery,让人头痛.无奈最近需要用到,所以在w3c恶补了一下.以下大致整理了一下相关概念,但是对XSL等派生语言没 ...

  3. XML学习总结(二)——XML入门

    XML学习总结(二)——XML入门 一.XML语法学习 学习XML语法的目的就是编写XML 一个XML文件分为如下几部分内容: 文档声明 元素 属性 注释 CDATA区 .特殊字符 处理指令(proc ...

  4. xml入门与解析

    xml入门与解析 1.xml基础知识 xml:可扩展的标签语言,标签自定义. 作用:存储数据.(配置文件) 书写规范: 1.区分大小写 2.应该有一个根标签 3.标签必须关闭 <xx>&l ...

  5. XML 入门 - XML 系统教程(1)

    XML (Extensible Markup Language)指可扩展标记语言. 组成 <?xml version="1.0" encoding="UTF-8&q ...

  6. XML入门介绍

    目录 XML 简介 xml 语法 文档声明 (1)创建一个 xml 文件 (2)图书有 id 性 属性 一 表示唯一 标识,书名,有作者,价格的信息 xml 注释 元素(标签) 1)什么是 xml 元 ...

  7. XMl入门介绍及php操作XML

    一.什么是XML XML全称:Extensible Markup Language 中文名:可扩展标记语言 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,允许用户对自己的标 ...

  8. Javaweb入门20160301 ---xml入门

    一.xml语法 1.文档声明 用来声明xml的基本属性,用来指挥解析引擎如何去解析当前xml 通常一个xml都要包含并且只能包含一个文档声明 xml的文档必须在整个xml的最前面,在文档声明之前不能有 ...

  9. FusionCharts xml入门教程

    由于项目需求需要做一个报表,选择FusionCharts作为工具使用.由于以 前没有接触过报表,网上也没有比较详细的fusionCharts教程,所以决定好好研究FusionCharts,同时做一个比 ...

随机推荐

  1. HTML基础(一)——一般标签、常用标签和表格

    第一部分  HTML <html>    --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> ...

  2. mysql-4 数据检索(2)

    用通配符进行过滤 like操作符  %通配符   %可以匹配任意字符 SELECT prod_id , prod_name FROM products WHERE prod_name LIKE 'je ...

  3. sql server 常见错误代码15000 - 15999含义解析

    错误 15000 - 15999 SQL Server 2008 R2 其他版本 错误 严重性 是否记录事件 说明(消息正文) 15001 16 否 对象 '%ls' 不存在或不是此操作的有效对象. ...

  4. mysql优化---订单查询优化:视图优化+索引创建

    订单的表结构采用了垂直分表的策略,将订单相关的不同模块的字段维护在不同表中 在订单处理这个页面,需要查询各种维度, 因此为了方便查询创建了v_sale_order视图(老版本) drop view v ...

  5. 使用 xtrabackup 进行MySQL数据库物理备份

    0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于 ...

  6. dpdk在虚拟机上出错处理

    目录 1. 所用系统与软件版本 2. 虚拟机配置 3. Ubuntu 12.04上的配置 3.1 准备 3.2 通过setup脚本进行配置 3.3 通过命令配置 4. CentOS 7.0上的配置 4 ...

  7. App_Data 目录中的数据库位置指定了一个本地 SQL Server

    <configuration> <system.web> <compilation debug="true" targetFramework=&quo ...

  8. java汉化

    http://download.eclipse.org/technology/babel/babel_language_packs/R0.13.0/luna/luna.php _x86_64版本下载地 ...

  9. Android 之窗口小部件详解--App Widget

    Android 之窗口小部件详解--App Widget  版本号 说明 作者 日期  1.0  添加App Widge介绍和示例  Sky Wang 2013/06/27        1 App ...

  10. 第5章 绘图基础_5.1-5.4 GDI绘图

    5.1 GDI的原理和结构 (1)提供一种特殊机制彻底隔离应用程序与不同输出设备(eg.显示器或打印机),以便支持 与设备无关的图形. 光栅设备(如显示器.激光打印机):图像是由点构成的矩阵 图形输出 ...