[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>
<root>    #所有的XML必须有一个根节点
<user>内容</user>
<msg>内容</msg>
</root>
<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 version="1.0" encoding="utf-8" ?>  #头声明
<root>
    <define>text</define>
    <!-- <a>这是注释</a> -->
    <msg> 如果a < b ,就正确</msg> # 转义
</root>
<?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>
<?xml version="1.0" encoding="utf-8" ?>  #头声明
<root>
    <man>
    <name>
    <!--<![CDATA[ 不解析的内容  ]]>-->
    <msg><![CDATA[尼古拉斯赵四说2>3]]</msg>
    </name>
    </man>
</root>
<?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
?>
<?php
// simplexml_load_file 解析XML文档,返回PHP对象
# file_get_contents("")  读普通文件
$x = simplexml_load_file('3.1.xml');
echo $x->man[0]->name
?>
<?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;
}
?>
<?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;
}

?>
<?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');
?>
<?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');
?>
<?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 分享
Everyone has its disadvantage just like the god bites the apple. the bigger disadvantage you have, the more the god appreciate it.
每个人都会有缺陷,就像被上帝咬过的苹果,有的人缺陷比较大,正是因为上帝特别喜欢他的芬芳
评论 共20条

请登录后发表评论

    • 头像Malachi Miller0
    • 头像Cornelius Mosciski0
    • 头像Pietro Hirthe0
    • 头像Petra Moore0
    • 头像Elouise Gerlach0
    • 头像Maddison Hodkiewicz0
    • 头像Magali Marvin0
    • 头像Agnes Medhurst0
    • 头像Brian Spencer0
    • 头像Terrence Schoen0
    • 头像Moriah Pfeffer0
    • 头像Kacie Runte0
    • 头像Joel Stamm0
    • 头像rajaspin0
    • 头像Aaron Goldner0
    • 头像Allie Lang0
    • 头像Cornelius Mosciski0
    • 头像Joaquin Waters0
    • 头像Katelyn Harvey0
    • 头像카베진0