您的位置 首页 java

XML 学习详解

学习思路

XML 学习详解

1.什么是 Xml

Extendisble mark language 【可扩展的标记语言】

 标记语言

HTML ,XHTML, HTML5 ,XML

你们知不知道他们之间有什么关系吗?

XML 学习详解

 可扩展

在HTML中 写一个表格我们使用

预定义标签,含义已经被定义好了。

标签可以自定义 ,

 特点

XML 指可扩展标记语言,是独立于软件和硬件的信息传输工具。

XML 是一种标记语言,很类似 HTML。

XML 的设计宗旨是传输数据,而非显示数据

XML 标签没有被预定义。您需要自行定义标签。

XML 被设计为具有自我描述性。

XML 学习详解

XML 是 W3C 的推荐标准。

2.Xml的作用

总共分为两大部分:

 数据储存

配置文件储存数据:

在一些软件: QQ 飞秋 ,都有配置文件的,固定参数数据储存,在一些C/S模式的软件中应用的非常多,在 编程语言 中, Java ,net ,C#

临时表的数据储存:

在实际的项目中, 一些固定不变得数据和数据量比较少的数据我们会使用xml 来进行储存。例如:地理信息数据

 数据交换

AJAX 角度

进行固定格式的数据交换

Webservice 网络服务

例如:查询天气,航班信息查询

二、XML结构

 代码举例:

XML 学习详解

 结构分析:

XML 学习详解

 总结特点

1.必须要有根元素,有且只能有一个。

2.Xml的元素类型有三种:

元素节点

文本节点:

标签中含有文本内容

属性节点:

在节点中有属性存在,我们就说这个节点是一个属性节点

三、XML语法

1.语法总则

必须以XML声明开头

它必须拥有唯一的根元素

开始标签必须与结束标签相匹配

元素对大小写敏感

所有的元素都必须关闭

所有元素都必须正确嵌套

必须对特殊字符使用实体

2.文档声明

声明一个xml文件

 <?xml version=”1.0”  Encoding =”utf-8” ?>
语法规则: 必须 <?xml ?>
说明 version : xml的版本,通用版本1.0
     Encoding:  字符编码 格式  

运行上述代码,结果如下:

XML 学习详解

注意:字符编码格式统一,xml 编码的声明,必须要和文件的格式保持一致

XML 学习详解

3.命名规则【标签元素】

为什么要有这个命名规则呢?

因为我们XML 它是一个可扩展的标记语言,标签自己定义

名称可以是字母、数字以及其他的字符

名称不能以数字或者标点符号开始

名称不能以字符“xml”(或者Xml、XML)开始

名称不能包含空格

可以使用任何名称,没有保留的字词

插脚一脚:

4.定义元素【标签】

 Xml三种节点

元素节点

文本节点

属性节点

 元素的三种表现形式:

元素包含元素:

XML 学习详解

元素包含文本节点:

XML 学习详解

元素包含属性:

XML 学习详解

 实例

5.定义属性

 描述

属性他就是用来描述一些事物元素的【附加描述信息】

属性必须依附于元素来实现

 作用

描述信息的定义

描述信息可以在属性和标签之间进行切换

 注意使用事项

1.属性必须依附于元素来实现

2.必须定义在开始标签

6.实体引用【CDATA区】

对比人物大小如下图:

XML 学习详解

 描述

在标签内部写 字符串 文本的时候,会有一些特殊的字符例如:< > 空格,等。我想需要在文本中展示出来,这个时候我们不能直接写在里面,要使用实体引用

 实体引用

在HTML中的实体引用,

空格:

XML 学习详解

在XML中使用实体引用

XML 学习详解

如果特殊符号特别多,这个时候怎么办?

 多个实体引用

语法:<![CDATA[data]]>

Data: 数据

使用CDATA 区 如下

XML 学习详解

7.注释

在HTML中使用注释

 <!--  注释内容 -->  

在XML中同样使用

注意:注释不能写在声明的开始

XML 学习详解

8.批处理指令【了解】

处理指令(PIs)允许文档包含用于应用程序的指令

处理指令很少被使用。主要用于链接 XML 文档到样式表【xml-stylesheet】

引入方法:

定义样式文件

Books.css

代码:

p{

color:red;

}

XML 实现

XML 学习详解

课堂练习:

编写xml文档,将如下所示user数据用XML的方式来保存

XML 学习详解

四、PHP解析XML

1.什么是XML的解析

其实就是将xml结构中储存的数据给提取出来, 这个提取的过程我们把他叫做解析,解析出来的内容就是,文本节点包含的内容还有属性

2.PHP解析XML方式

手册位置:

XML 学习详解

在PHP中解析XML文档,有十几种操作, 但是我们主要关注 DML 操作和SimpleXML

DOM: 是XML解析通用方法,不仅适用于PHP ,也使用其他语言【操作方法和函数是一样】

SimpleXML: 是PHP语言所特有的处理方法, 将一些复杂DOM操作,进行了方法的封装,可以简单实现XML的操作

3.创建一个XML文件

 创建步骤

1.声明文档格式

2.定义元素

3.元素结构化

 最终代码

 <?xml version="1.0"  encoding ="utf-8" ?>
<words>
<word>
<name>no zuo no die</name>
<fayin>no zuo no die</fayin>
<fanyi>不作死就不会死</fanyi>
</word>
<word>
<name>hello </name>
<fayin>hello</fayin>
<fanyi>你好</fanyi>
</word>

</words>
  

想操作XML必须确保xml没有任何语法错误!

4.DOM操作方式【了解】

 实现原理

XML 学习详解

整个转换操作是在计算机内存中实现的。

 实现思路

1.读取文档

2.获取文档内容

3.将文档的内容展示出来

 使用语法

操作类DOM Document

$dom = new DOMDocument(version,encoding);

说明:version 我们定义XML 是的版本,

Encoding 定义时候的编码格式

实现代码:

 //读取创建的单词的xml 文档
//实例化操作对象DOM
$dom = new DOMDocument('1.0', 'utf-8');
//加载words.xml 文  

 操作方法

语法:对象模型->load(url);

说明:url 可以是据对路径也可以是 相对路径

作用:加载要操作的xml文件

对象加载文件之前和文件之后区别:

XML 学习详解

 读取节点

语法:当前对象-> getElementsByTagName (‘标签名’);

作用:选中指定所有的标签

获取了所有的节点:

 //加载words.xml 文件
$dom->load('words.xml');
$names = $dom->getElementsByTagName('name');
var_dump($names->item(1));exit;
  

从节点中获取文本内容

语法:选中的节点-> Item(0);

作用:选中具体的操作节点

 //加载words.xml 文件
$dom->load('words.xml');
$names = $dom->getElementsByTagName('name');
var_dump($names->item(1));exit;  
XML 学习详解

 读取节点属性

当前节点对象->getAttribute(‘属性名称’);

XML 学习详解

 增加节点

 删除节点

5.SimpleXML方式【重点】

 实现原理

XML 学习详解

 使用语法

使用函数

Simplexml_load_ File (path);

说明:path 就是要加载的文件的路径【相对路径也可以是绝对路径】

作用:1.加载xml文件

2.实例化操作类【SimpleXmlElement】

Simplexml_load_string(str);

说明:str 就是一个xml格式的字符串

作用:将一个xml格式的字符串,转换成就可以操作的对象

File_get_contents(path);

读取节点

 $dom = simplexml_load_file('words.xml');
//循环读取
 foreach  ($dom->word as $key => $value) {
echo $value->name;
}
Simplexml_load_string()  

XML 学习详解

读取节点属性

语法:当前节点对象->attributes()

作用:获取当前节点的属性的值

XML 学习详解

创建节点

语法:操作对象->addChild(节点名称,节点内容)

语法:操作对象-asXML(‘保存的文件以及路径’);

 $str = file_get_contents('words.xml');
// var_dump($str);exit;
$dom = simplexml_load_string($str);
//增加word节点
$word = $dom->addChild('word');
//增加name
$word->addChild('name', 'xiaoming');
//fanyi
$word->addChild('fayin', '小明');
//翻译
$word->addChild('fanyi', '小明');
//将追加的内容写入文件即可
$dom->asXML('words.xml');  

 删除节点

在PHP数组中我想删除某个值,使用unset($arr[1])

也是使用unset() , 但是不是unset 数组,而是对象的属性名称

XML 学习详解

 修改操作自己完成

6.DOM和SimpleXML对比

 实现原理对比

DOM 他是将XML文档转换成可以操作的模型【在内存中存在】,这个时候在使用DOM封装的操作对象来对这个模型进行CURD操作。

SimpleXML 它是将XML文档直接转换成对象来直接进行CURD操作

 代码对比

XML 学习详解

六、XPATH

1.什么是XPATH

XPath是一门在 XML 文档中查找信息的语言,XPath可用来在 XML 文档中对元素和属性进行遍历。

而且Xpath并不仅仅应用于XML数据查询,其在很多语言中(PHP、Java、.NET以及Javascript),都可以广泛使用。

参考文献: @link

使用Xpath定义路径表达式 可以按需查找节点 并返回集合形式。

2.查找规则

 【/】设置绝对路径

语法:操作对象->xpath(‘/节点名’);

作用:选取从根节点开始查找

XML 学习详解

 【//】全局查找

语法规则:操作对象->xpath(‘/节点//节点名称’);

作用:查找节点, 不管节点在什么层次下都返回节点的内容

使用例子:

XML 学习详解

 【..】选取父节点

语法:操作对象->xpath(‘/节点1/节点2/节点3/..’);

作用:

XML 学习详解

 【[]】过滤节点

语法规则:操作对象-xpath(‘/节点[节点名称=节点里面的内容]’);

作用:根据节点内容来查找节点

XML 学习详解

 【@】过滤属性

语法:操作对象-xpath(‘/节点[@属性=属性的值]’);

作用:

XML 学习详解

3.XPATH在线词典应用

1.完成需求

提供一个input 框 当用户输入要查找的单词的时候返回这个单词的所有翻译结果。

2.完成步骤

1.使用函数来加载单词xml文件

2.获取用户传递的参数

3.使用xpath进行数据的检索

4.将结果返回并且展示到页面中

XML 学习详解

因为检索出来的内容是多个,所以返回格式是:数组包含对象

XML 学习详解

要想trans 里面的内容向,word 一样可以使用【对象->word】这种形式来输出

可以将CDATA进行转码

XML 学习详解

3.完成代码

   <?php
// 1.使用函数来加载单词xml文件
$doc = simplexml_load_file('words_all.xml', 'SimpleXMLElement', LIBXML_NOCDATA);

// 2.获取用户传递的参数
if (!empty($_POST['keywords'])) {
    // 3.使用xpath进行数据的检索
    $res = $doc->xpath('/wordbook/item[word="' . $_POST['keywords'] . '"]');

}

// 4.将结果返回并且展示到页面中
;?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "#34;>
<html xmlns="#34; xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>在线词典查询</title>
</head>
<body>
<form action="" method="post">
请输入单词:<input type="text" name="keywords" />
<input type="submit" value="提交查找" >

</form>
<?php
echo $res[0]->word . '<br/>';
echo $res[0]->tags . '<br/>';
echo $res[0]->trans;
?>
</body>
</html>
  

文章来源:智云一二三科技

文章标题:XML 学习详解

文章地址:https://www.zhihuclub.com/193095.shtml

关于作者: 智云科技

热门文章

网站地图