[XML]知识笔记

一,xml概述

1.1引入

在我们日常生活中我们在各种网站上面个看到他们都有天气什么的,他们展示的形式可能不同,但他们所用的数据是一样的,那他们肯定已不是从卫星直接获取的而是从国家的一些平台获取的
但是在获取他们的数据的时候他,因为有很多种语言都能写后端,们不可能是用你的那种语言写的格式,他要针对所有的平台进行发布,就用到了xml格式:

图片[1],[XML]知识笔记,网络安全爱好者中心-神域博客网

XML数据格式最主要的功能就是数据传输(就是从一个网站传到另一个网站)

XML数据格式还有什么用途呢?

配置文件: config.xml (我们一个网站可能有几种语言编写,我们不可能给每种语言都配置相应的文件,我们就能用xml格式让他们都能用)

储存数据: 当作小型数据库 data.xml

xml的效果:使数据具有结构性,易读易处理

什么是XML

XML指的是可扩展性标记语言(html也是一个标记性语言);
XML被发明的目的是传输和存储数据,而不是展示数据;
XML的标签必须自定义,在写标签名的时候一定要有含义;
XML是W3C推举的数据传输格式;

如何自己写一段XML?

<root>    #所有的XML必须有一个根节点
<user>内容</user>
<msg>内容</msg>
</root>

XML和HTML有哪些区别?
1:HTML标签不能自定义,XML标签只能自定义;
2:HTML语法要求不严格,XML标签语法要求极其严格,必须是成对标签;
3:XML用来传输和存储数据,HTML用来展示数据;

二,XML的基本语法

语法规则

XML必须有根节点;
根节点就是所有节点的父级节点(习惯是用root,但也可以自己定义)

XML的头声明可有可无,但是建议写
因为编码很重要

所有XML标签都要成对出现

标签名大小写敏感

标签不能交叉

特殊符号要用实体转义

在xml中需要转义的字符有:
< < > >
& &
‘ ‘
” “‘

<?xml version="1.0" encoding="utf-8" ?>  #头声明
<root>
    <define>text</define>
    <!-- <a>这是注释</a> -->
    <msg> 如果a < b ,就正确</msg> # 转义
</root>

元素属性

属性原则:
一个标签可以有多个属性
属性的值必须用双引号或单引号引起来
命名规则:数字字母下划线,不能让数字开头

属性就是表示标签的 一些额外信息;

XML中属性就是个鸡肋(食之无肉,弃之有味)
在解析XML数据时,属性会带来额外的解析代码;

CDATA

<?xml version="1.0" encoding="utf-8" ?>  #头声明
<root>
    <man>
    <name>
    <!--<![CDATA[ 不解析的内容  ]]>-->
    <msg><![CDATA[尼古拉斯赵四说2>3]]</msg>
    </name>
    </man>
</root>

注意特殊字符较少时特殊字符有实体,较多时用CDATA(要大写)

三,使用PHP解析XML

XML时一种数据传输格式,当PHP接收到数据就是一段XML的时候,我们的PHP应该怎么处理XML数据呢?
在PHP5版本后,其提供了一个非常强大的类库,SimpleXML类库,专门有于实现对XML文档的解析操作.

XML解析原理

PHP解析三步:
1:读取XML文档到内存
2:形成DOM树
3:由DOM树生成对象并返回;

图片[2],[XML]知识笔记,网络安全爱好者中心-神域博客网
<?php
// simplexml_load_file 解析XML文档,返回PHP对象
# file_get_contents("")  读普通文件
$x = simplexml_load_file('3.1.xml');
echo $x->man[0]->name
?>
图片[3],[XML]知识笔记,网络安全爱好者中心-神域博客网
图片[4],[XML]知识笔记,网络安全爱好者中心-神域博客网

php解析生成的DOM树:

图片[5],[XML]知识笔记,网络安全爱好者中心-神域博客网

遍历XML数据

<?php
$x = simplexml_load_file('3.1.xml');

foreach($x->man as $v){
echo $v->name;
}

$c=count($x->man);
for($i=0;$i<$c;$i++){
echo $x->man[$i]->name;
}

?>

使用simpleXML增加节点

<?php
$x = simplexml_load_file('3.1.xml');
//对象中的addChild方法创建节点
$man = $x->addChile('man')
//对象中的addChild方法创建节点并给创建后的节点添加内容
$man->addChile('name','玉帝');
$man->addChile('age','999');

//将添加的对象重新解析成XML文档,写入文件
$x->asXML('3.1.xml');
?>

案例

表单提交页面:

图片[6],[XML]知识笔记,网络安全爱好者中心-神域博客网

后端:

图片[7],[XML]知识笔记,网络安全爱好者中心-神域博客网

四,Xpath语言

概述

他是一门专门用于查找XML数据内容的语言;
他是用来在XML文档中对元素及属性进行遍历;

使用及其语法

绝对路径查找:

图片[8],[XML]知识笔记,网络安全爱好者中心-神域博客网

相对路径查找:

图片[9],[XML]知识笔记,网络安全爱好者中心-神域博客网

其他查找:

图片[10],[XML]知识笔记,网络安全爱好者中心-神域博客网

------本文已结束,感谢您的阅读------
THE END
喜欢就支持一下吧
点赞32 分享
评论 共8条
头像
善语结善缘,恶语伤人心
提交
头像

昵称

取消
昵称常用语 夸夸
夸夸
还有吗!没看够!
表情图片
    • 头像Joel Stamm0
    • 头像rajaspin0
    • 头像Aaron Goldner0
    • 头像Allie Lang0
    • 头像Cornelius Mosciski0
    • 头像Joaquin Waters0
    • 头像Katelyn Harvey0
    • 头像카베진0