20150131--XML上_weixin_30553837的博客-程序员秘密

技术标签: java  php  数据库  

image

万能的数据传输格式——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传输原理

clip_image002

二、XML基本语法

1、快速入门

描述人的信息

clip_image004

运行效果:

clip_image006

描述书的信息

clip_image008

运行效果:

clip_image010

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

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

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

2、xml基本语法

l 文档声明

l 元素

l 元素属性

l 注释

l 特殊字符

l CDATA区段

l 处理指令

1)文档声明

clip_image012

需要先使用文档声明来声明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 标签属性所代表的信息也可以被改成用子元素的形式来描述

clip_image014

4)注释

基本语法:

<!—注释内容-->

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

clip_image016

运行效果:

clip_image018

5)特殊字符

观看一下示例:

clip_image020

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

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

clip_image022

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

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

clip_image024

6)CDATA区段(CDATA节)

CDATA:Character Data

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

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

示例代码:

clip_image026

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

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

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

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

7)处理指令PI

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

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

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

常用处理指令:

xml指令

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

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

xml示例代码:

clip_image028

style.css代码

clip_image030

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

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

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

1)rss基本结构

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

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

clip_image032

2)载入rss格式

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

clip_image034

3)定义channel显示标签

clip_image036

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

clip_image038

运行效果如下:

clip_image040

clip_image042

posted on 2016-04-22 23:34  山山未迟 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lifushan/p/5423254.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30553837/article/details/99968321

智能推荐

qt用odbc连接mysql_【原创】Qt 使用ODBC driver 连接SQL Server_午餐时间到了的博客-程序员资料

最近在做数据库的课程设计。第一个需要解决的问题是使用什么工具来实现这个系统。经过一番资料查找,决定使用SQL Server Express 2012作为服务器,使用Qt作为编写客户端程序语言。问题是client如何连接SQL Server? 下面是我的解决方法。1.开启windows上的SQL Server 的ODBC驱动ODBC 是一个调用级接口,它使得应用程序得以访问任何具有 ODBC 驱动程...

翻页时钟代码大公开_lovefan的博客-程序员资料_翻页钟开源代码

不少朋友向我要翻页时钟的代码,现在贴给大家。代码水平有限,见谅。看不明白的可以问我:)js// miniprogram/pages/flipClock/jsconst moment = require('../../../utils/moment-with-locales.min.js');const Lunar = require('../../../utils/lunar.js');var startX, endX;var moveFlag = true; // 判断执行滑动事件.

JAVA切换不了FTP服务器目录_解决linux下ftp指定访问目录无法修改的问题_豪睿刘爱上楼楼梯的博客-程序员资料

他的系统是CentOS,是RH派系的。我把vsftpd安装配置好了,以为大功告成,但客户端访问提示如下错误:500 OOPS: cannot change directory:/home/ftp原因是他的CentOS系统安装了SELinux,因为默认下是没有开启FTP的支持,所以访问时都被阻止了。//查看SELinux设置# getsebool -a|grep ftpftpd_disable_tr...

.NET实现网络爬虫_hyunbar的博客-程序员资料_.net 爬虫

爬虫的特征和运行方式User-Agent:主要用来将我们的爬虫伪装成浏览器。Cookie:主要用来保存爬虫的登录状态。连接数:主要用来限制单台机器与服务端的连接数量。代理IP:主要用来伪装请求地址,提高单机并发数量。爬虫工作的方式可以归纳为两种:深度优先、广度优先。深度优先就是一个连接一个连接的向内爬,处理完成后再换一下一个连接,这种方式对于我们来说缺点很明显。 广度优先...

c web service_简单并快乐着的博客-程序员资料

转自 http://blog.163.com/wzbwzb_187/blog/static/6632425720106424158919/ 以下是源代码: /**************filename: Server.cpp**************** 该程序通过标准socket实现简单Http服务器 运行该服务器可以通过浏览器访问服务器目录下的 Html文件和j

CMAKE错误:No CMAKE_CUDA_COMPILER could be found._luckwsm的博客-程序员资料_cmake_cuda_compiler

在使用cmake编译VTK程序过程中,执行cmake命令时,出现如下错误:-- The CUDA compiler identification is unknownCMake Error at CMakeLists.txt:4 (enable_language): No CMAKE_CUDA_COMPILER could be found. Tell CMake where to find the compiler by setting either the environment v...

随便推点

Bibtex格式类型_小王同学w的博客-程序员资料_bibtex类型

出于保留资源和查找方便,转载自https://blog.csdn.net/kmsj0x00/article/details/85318057类型简介必需关键字可省略关键字@article期刊或杂志上的一篇文章。author, title, journal, year.volume, number, pages, month, [email protected]有确定出版社的书籍。author或editor, title, publisher, year.volume或number, series, address, e

SpringBoot-Google二步验证_apkqfa6158的博客-程序员资料

SpringBoot-Google二步验证概念:Google身份验证器Google Authenticator是谷歌推出的基于时间的一次性密码(Time-based One-time Password,简称TOTP),只需要在手机上安装该APP,就可以生成一个随着时间变化的一次性密码,用于帐户验证。Google身份验证器是一款基于时间与哈希的一次性密码算法的两步验证软件令牌,此软件...

Maven_weixin_41249041的博客-程序员资料

maven帮助构建项目 项目和项目之间的依赖关系,管理jar包。项目管理工具,管理java项目:1、项目对象模型 POM对象模型,每个maven工程中都有一个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。。2、依赖管理系统(基础核心 )maven通过坐标对项目工程所依赖的jar包统一规范管理。3、maven定义一套项目生命周期清理、初始...

css教程系列5:px、em、rem区别介绍_邢晋宇的博客-程序员资料

1 PXpx像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。PX特点1. 浏览器无法调整px单位的字体,以em或rem为字体单位可调整字体。 2 EMem是相对长度单位。EM特点1. em的值并不是固定的;2. 行高:n倍的 em = n *父级元素的像素px大小(若无则*浏览器的默认字体)。3 REMrem是CSS3新增的一个相对单位(root em,根em),也是相对...

Matlab: 作图_weixin_34413357的博客-程序员资料

查看当前变量可以用who,查看当前变量及其结构,大小,类型等,可以用whos。控制图的大小figure(‘position’,[x0,y0,dx,dy]);figure(fig number);控制图例(legend)legend('leg1','leg2','Location','NorthWest');% hide the legend boxlegend boxoff...

CentOS7 安装 MYSQL5.6_LiexingVerne的博客-程序员资料

最近在学习虚拟机的下安装mysql,弄了很久最后终于搞好了(感觉自己太笨),记录下自己遇到的问题。环境:1.CentOS 7X642.mysql-5.6.45-linux-glibc2.12-x86_64.tar.gz安装步骤1.检查是否安装mariadbrpm -qa | grep mariadb如果存在就卸载rpm -e--nodeps mariadb...

推荐文章

热门文章

相关标签