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

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

一、XML简介

1、历史起源

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

Genaral  Markup  language

 

gml :通用标记语言

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

 

sgml :标准通用标记语言

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

 

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

 

html :1993 W3C 进行推广和使用

 

xml :1998年 

 

2、什么是xml

XML

全    称:Extensible Markup Language

中文名:可扩展标记语言

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

 

面试题:什么是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)小型数据库

php+mysql 金山词霸

php+xml 金山词霸

 

 

5、xml传输原理

 

 

二、XML基本语法

1、快速入门

2、xml基本语法

l 文档声明

l 元素

l 元素属性

l 注释

l 特殊字符

l CDATA区段

l 处理指令

 

1)文档声明

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

最简单的语法:

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

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

encoding 编码格式 (编码格式utf-8big5gb2312

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>

    错误的:<!@#></!@#>

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)特殊字符

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

 

 

 

 

6)CDATA区段(CDATA节)

CDATA:Character Data

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

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

示例代码:

 

 

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

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

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

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

 

 

PHP XML解析原理

1为什么需要XML解析

 

2如何进行XML解析(PHP

PHP DOM模型进行XML解析(增加、修改、删除)

PHP SimpleXML(查询)

Json  json_encode()  json_decode()(推荐)

 

PHP DOM解析XML

1PHP DOM模型

4PHP解析XML四步走:

1、在内存中开辟存储空间——”面”

2、加载XML文件到内存,并形成DOM树结构

3获取同级兄弟节点——“串”

4、获取指定的文本节点并读取其值——“点”

 

a)开辟内存空间,形成

要用到的知识点:

DOMDocument

 

参数说明:

$versionxml版本号,采用1.0

$encoding编码格式,utf-8

 

b)加载XML文件到内存,形成DOM结构

要用到的知识点:

 

参数说明:

$filename要载入xml文件的名称

 

c找到同级兄弟节点,形成“

要用到的知识点

DOMNodeList

 

参数说明

$length获取到当前串的长度

item(索引,默认从0开始)获取指定节点

 

getElementsByTagName()

 

参数说明:

$name要获取元素标签、标记)的名称

 

d)获取同级兄弟节点输出其值

要用到的知识点:

 

参数说明:

$index通过索引获取指定元素

 

 

2PHP DOM查询与遍历

3PHP DOM增加操作

增加四步走:

1)开辟面空间

2载入xml到内存,形成DOM

3)创建节点并追加

4保存内存数据到XML文件中

 

要用到的知识点:

 

参数说明:

$name :创建的节点名称

$value :可选参数,创建节点的值

 

 

参数说明:

$newnode 追加的新节点名称(要求类型为DOMElementDOMNode

 

参数说明:

$filename:要保存xml文件名称

 

4PHP DOM删除操作

删除操作步走:

1)开辟内存空间,形成

2)载入xml文件到内存

3)找到要删除的节点

4找到其父节点移除指定的子节点

5)保存内存数据到xml文件中

 

要用到的知识点:

 

参数说明:

$oldnode要移出的节点

 

 

5PHP DOM更新操作

PHP DOM更新操作分为两种:

1值操作,只更新某个节点的值信息通过nodeValue属性设置即可

2)节点操作,需要特定的函数辅助完成通过replaceChild方法设置即可

 

值更新操作步走:

1)开辟内存空间,形成

2)载入xml文件到内存,形成dom树

3)找到要更新的节点,更新其值

4)保存内存数据到XML文件中

 

 

节点更新操作六步走

1开辟内存空间,形成

2)载入xml文件到内存

3)创建新节点

4找到旧节点

5)找到父节点,然后新节点替换老节点

6保存内存数据到XML文件中

 

要用到的知识点:

 

参数说明:

$newnode:创建的新节点

$oldnode:要更新的旧节点

 

6属性操作

1属性的添加更新操作

要用到的知识点:

 

在属性的添加与更新操作用到的是同一个方法setAttribute,当当前元素无属性时,系统会自动添加属性,如果已存在,则更新其值

参数说明:

$name属性名称

$value属性的值

 

 

2属性的判断与读取操作

bool DOMElement::hasAttribute ( string $name ) :判断当前元素是否具有某一属性

bool DOMNode:: hasAttributes ( void ) :判断当前元素是否具有属性

string DOMElement::getAttribute( string $name ) :获取元素的属性

参数说明:

$name 属性名称

 

3移除属性

要用到的知识点:

bool DOMElement::removeAttribute ( string $name )

参数说明:

$name要移出的属性名称

 

 

 

PHP SimpleXML实现对XML增删改查

1、载入XML文件到内存,并形成SimpleXML对象

simpleXMLElement simplexml_load_file ( string $filename) :载入xml文件到内存并生成simpleXML对象

SimpleXMLElement::__construct ( string data)

 

示例代码:

 

 

2输入指定文本节点的值

3、遍历输出所有数据

方法一:通过foreach直接遍历数组

方法二:通过children()方法实现对xml数据的遍历输出

 

该方法可以直接获取到当前对象的子节点

 

4输出属性

在simplexml对象中,对于属性的读取有些特殊,不能通过以上方法直接读取,必须借助外在方式:

通过数组方式直接读取:

 

通过attributes()方法获取到属性对象,并输入属性的值

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值