20150131--XML上

万能的数据传输格式——XML

目录

万能的数据传输格式——XML上... 1

一、XML简介... 3

1、历史起源... 3

2、什么是xml 3

3、xml与html区别... 4

4、xml应用场景... 4

1)充当程序间交互的中间件(通讯标准)... 4

2)配置文件... 4

3)小型数据库... 4

4)规范数据格式(DTD+XML)... 4

5、xml传输原理... 5

二、XML基本语法... 5

1、快速入门... 5

2、xml基本语法... 7

1)文档声明... 7

2)元素(标记、标签)... 7

3)元素属性... 8

4)注释... 9

5)特殊字符... 10

6)CDATA区段(CDATA节)... 11

7)处理指令PI 11

3、扩展:车载系统中的RSS实现... 12

三、DTD约束... 14

1、为什么需要DTD约束... 14

2、什么是DTD.. 14

3、快速入门... 15

4、DTD约束文档分类... 15

1)内部DTD.. 15

2)外部DTD.. 16

3)公用DTD.. 17

5、DTD约束——元素(标记、标签)定义... 18

6、DTD约束——属性定义... 19

1)属性类型... 20

2)默认值... 21

7、DTD约束——定义实体... 23

1)引用实体... 24

2)参数实体... 24

8、综合案例... 25

一、XML简介

1、历史起源

gml(1969)->sgml(1985)->html(1993)->xml(1998)

gml :通用标记语言

IBM 1969 砖家共同研究一个课题:一个程序如何运行在多个系统中(系统可移植性)

sgml :标准通用标记语言

IBM 1985 对基本的gml进行了升级

html :英国科学家博纳斯.李 由 sgml 中定义了20个html标签实现了世界上第一个网页

html :1993 W3C 进行推广和使用

xml :1998年

2、什么是xml

XML

全 称:Extensible Markup Language

中文名:可扩展标记语言

用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,允许用户对自己的标记语言进行定义的源语言。

<html>

<head></head>

<body></body>

</html>

<游戏></游戏>

面试题:什么是XML,XML主要用途是什么?

答:可扩展标记语言,XML用于传输数据与存储数据。

3、xml与html区别

1)html标签不能自定义,从标签上不能达到“见词知意”的目的

<table></table>

<表格></表格>

2)html将数据与格式绑定在一起

xml只负责数据的传输与存储,其标签没有任何意义

3)不同浏览器解html不同

html语法要求不严格

等等

html主要用于数据的显示,xml主要用于数据传输

4、xml应用场景

1)充当程序间交互的中间件(通讯标准)

快递100接口(Java) XML PHP

2)配置文件

config.php php

config.xml php、java、c#

3)小型数据库

php+mysql 金山词霸

php+xml 金山词霸

4)规范数据格式(DTD+XML)

PHPExcel

1 2 3 4

产品编号 产品名称 产品数量 产品单价

itcast001 php教程 100 998

5、xml传输原理

二、XML基本语法

1、快速入门

描述人的信息

运行效果:

描述书的信息

运行效果:

说明:xml运行调试方式有两种:

第一种:在xml文档上直接鼠标右键,打开方式选择浏览器直接打开

第二种:直接在浏览器地址栏输入网址,直接访问即可

2、xml基本语法

l 文档声明

l 元素

l 元素属性

l 注释

l 特殊字符

l CDATA区段

l 处理指令

1)文档声明

需要先使用文档声明来声明XML文档

最简单的语法:

l <?xml version=“1.0” encoding=“utf-8”?>

l version 版本为1.0 (代表当前xml文档的版本)

l encoding 编码格式 (编码格式utf-8、big5、gb2312)

l standalone 是否独立(是否依靠dtd文件) 默认yes

作用:告诉浏览器在解释时所采用的版本与格式等信息

2)元素(标记、标签)

l 一个标签分为起始和结束标签(不能省略)

错误:<title>三国志

正确:<title>三国志</title>

<title />

l 一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套

错误:<title><price></title></price>

正确:<title><price></price></title>

l 一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签

<html>

<head></head>

</html>

元素的命名规则

l 元素(标签)的名称可以包含字母、数字、减号、下划线和英文句点

正确的:<abc></abc>

错误的:<[email protected]#></[email protected]#>

l 严格区分大小写;

正确的:<abc></abc>

错误的:<abc></ABC>

l 只能以字母或下划线开头;

正确的:<abc123></abc123>

错误的:<123abc></123abc>

l 名称字符之间不能有空格或制表符;

正确的:<abc></abc>

错误的:<a b c></a b c>

l 名称字符之间不能使用冒号

正确的:<abc></abc>

错误的:<ab:c></ab:c>

3)元素属性

l 一个元素可以有多个属性

l 属性值一定要用引号(单引号或双引号)引起来

l 属性名称的命名规范与元素的命名规范相同

l 元素中的属性是不允许重复的

l 标签属性所代表的信息也可以被改成用子元素的形式来描述

4)注释

基本语法:

<!—注释内容-->

注:XML声明之前不能有注释,注释不能嵌套

运行效果:

5)特殊字符

观看一下示例:

我们在运行时发现,系统在第7行发现了一个错误,主要是由于系统中的特殊字符导致浏览器无法对特殊字符的解析而产生的,如何解决?

答:可以使用以下字符代替xml文档中的特殊字符

说明:第四个字符代表单引号

以上错误案例,可以采用如下方式解决:

6)CDATA区段(CDATA节)

CDATA:Character Data

作用:把标签当做普通文本内容

语法:<![CDATA[内容]]>

示例代码:

对于特殊字符与CDATA区段,比较?

共同点:都是用于对特殊字符的转化

不同点:特殊字符只能用于数据量较少的情况,比如小于号、大于号等情况

CDATA区段可以用于大批量数据的转化,如文章描述、文章内容等信息

7)处理指令PI

功能:主要用于xml数据的显示

作用:用来指挥软件如何解析XML文档。

语法:必须以“<?”作为开头,以“?>”作为结尾。

常用处理指令:

xml指令

xml-stylesheet指令:调用相应的css显示数据

例: <?xml-stylesheet type="text/css“ href=“style.css"?>

xml示例代码:

style.css代码

3、扩展:车载系统中的RSS实现

rss:是一种订阅服务,在很多网站如(新浪、网易)等系统中都可以看到

在网站系统中可以提供一个api接口,来实现rss信息的输出

1)rss基本结构

通过阅读rss手册,可以确定rss也是一种基于xml的特殊格式

在xml文档中,定义文档声明

2)载入rss格式

在文档声明下方,载入rss格式

3)定义channel显示标签

4)定义rss内容(定义item标签)

运行效果如下:

时间: 2024-08-12 22:21:25

20150131--XML上的相关文章

web.xml上监听器作用

<!--Spring ApplicationContext 载入 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 使Spring支持request与session的scope,如:<bean id="loginAction" c

xml 上拉下拉 核心代码

package com.example.xml_shangxia; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.text.format.DateUtils; import andro

用Myeclipse 编写struts.xml时,自动提示

之所以不自动提示,是因为这个xml它不知道自己的xml格式是什么有哪些标签,所以不知道该怎么提示 所以就要给它引入格式,所以要引入XSD或者DTD文件 1.首先打开MyEclipse的窗口,选择“Window”菜单下的“Preferences”选项 2.  打开的“Preferences”对话框中,选择左边的“XML”选项下的“XML Catalog”选项,然后选择右边的“Add”按钮 3.  在打开的对话框中,在“location”中输入struts.xml文件所对应的dtd文件的所在位置,在

Java 利用Apache Commons Net 实现 FTP文件上传下载

package woxingwosu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Comparator;

mybatis generator在eclipse上的配置与使用(在maven上配置方法)

mybatis generator在eclipse上的配置主要有在以下几个文件上需要进行修改内容:pom.xml,以及配置文件generatorConfig.xml的创建与编写. 1.在pom.xml上添加 在pom.xml上添加以下配置信息: <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId&

操作XML

操作XML 千呼万唤始出来,BB了这么多东西,咱们终于可以写点东西了,前方内容很多,楼主正在考虑是否可以分开写. 因为啥东西多呢?前面说了那么多关于XML的东西,什么转换啊,DTD啊,手都说了,我要是不给你演示一遍你说我骗你咋办? 首先记住一点:操作XML文档时,操作的单元是节点,首先要知道XML文档有哪些节点类型.在.NET中,有关XML的类型位于System.Xml.*命名空间下,System.Xml.XmlNodeType枚举列出了XML的节点类型. namespace System.Xm

(转)Unity 导出XML配置文件,动态加载场景

参考:http://www.xuanyusong.com/archives/1919 http://www.omuying.com/article/48.aspx 主要功能: 1.导出场景的配置文件 2.导出当前场景中资源的AssetBundle 3.客户端从服务器获取配置文件 4.解析配置文件,并根据配置文件下载AssetBundle 5.实例化并还原场景 1.场景设置:将需要导出的场景资源设置为预设 2.将场景配置导出为XML文件 [code]csharpcode: using UnityE

解决PHPCMS使用ueditor时缩略图上传问题

/* 前后端通信相关的配置,注释只允许使用多行方式 */ {     /* 上传图片配置项 */     "imageActionName": "uploadimage", /* 执行上传图片的action名称 */     "imageFieldName": "upfile", /* 提交的图片表单名称 */     "imageMaxSize": 2048000, /* 上传大小限制,单位B */   

用python处理xml文件并且用soap发送

新的需求中处理数据需要有个payment的操作,功能测试是用soapui发送xml,但是因为那个xml需要的数据较多并且比较麻烦所以想做成自动化,捣鼓了快一周终于成功了QUQ 不容易 记录下做的时候遇到的坑和points 1.数据获取 拼xml要从ORACLE中查询多个表单,一开始是写了几个def每个对应一张表的sql 因为中间会有一些上张表的结果是下张的取值,一开始想直接都写到文件里 结果发现执行的时候因为有pyc所以不是实时获取的 改成return,最后输出四个表的结果整在一个return