XML 基础认知
什么是XML
- XML指的是可扩展性标记语言
- XML被发明的目的是传输和存储数据,而不是展示数据
- XML的标签必须自定义,但是在写标签名的时候一定要有含义
自定义一段XML数据
<!-- 文件名后缀必须为 xml -->
<!-- 所有的xml文件必须有一个根节点/根标签 此文件中根节点为<root></root> -->
<!-- 可以在浏览器打开 鼠标右键 - Open With Live Serve -->
<root>
<user>熊熊丽</user>
<msg>一名小学生</msg>
</root>
浏览器打开后的结果:
XML和HTML的区别(重点)
- HTML为预定标签,标签不能自定义,XML必须(只能)自定义
- HTML语法要求不严格,XML语法要求极其严格(标签必须成对)
- HTML用来传输和存储数据,HTML用来展示数据
XML的基本语法
语法规则
- XML必须有根节点,根节点是所有节点的父级节点
- XML头声明,不强求,可有可无,但建议必须写
- <?xml version="1.0" encoding="utf-8" ?>
- 所有XML元素都必须是成对标签
- 标签名大小写敏感(区分大小写)
- 标签不能交叉书写:
- <a>AAA<b>BBB<a><b> -- 错误的,不可以交叉
- XML注释和HTML注释一致
- XML遇到特殊字符使用实体转义,XML有5个特殊字符
| 符号 | 实体 |
|---|---|
| < | < |
| > | > |
| & | & |
| ' | ' |
| " | " |
XML元素属性
属性就是表示标签自身的一些额外信息
XML中属性 可以使用,但是最好不去使用,因为在解析XML数据时,属性会带来额外的解析代码(多了一步比较麻烦)
属性规则:
- 一个标签可以有多个属性,属性的值必须使用引号引起来
- 属性命名规则:数字字母下划线,数字不能开头
<root>
<man>
<name>金星</name>
<age>36</age>
</man>
<man>
<name age="38">太白</name>
</man>
</root>
CDATA
语法:<![CDATA[...不需要解析的内容]]>
<?xml version="1.0" encoding="utf-8" ?>
<root>
<title>数学题:</title>
<msg>如果 2 < 4 , 那么请证明5 > 3;</msg>
<msg><![CDATA[如果 2 < 4 , 那么请证明5 > 3;]]></msg>
</root>
解析
PHP解析
<?php
// file_get_contents("04.xml") // 用于读取普通文件
$x = simplexml_load_file("04.xml") // simplexml_load_file专门用于读取xml文件
// simplexml_load_file解析xml文档,返回php对象
var_dump($x); // 输出$x
echo $x->man[0]->name; // 输出第一个name标签的值
PHP解析并遍历
// 遍历 循环获取XML数据
// way - 1
foreach($x->man as $v){
echo $v->name;
}
// way - 2
$c = count($x->man);
for($i=0;$i<$c;$i++){
echo $x->man[$i]->name;
}
PHP添加节点
// XML 添加节点
// 对象中的addChild方法创建节点
$man = $x->addChild('man');
// 对象中的addChild方法创建节点并给创建后的节点添加内容
$man->addChild('name','玉帝');
$man->addChild('age','999');
var_dump($x);
// 将添加后的对象重新解析成XML文档,写入文件
$x->asXML("04.xml");
js解析
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
<script>
// 假设我们有如下XML字符串
var xmlString = '<root><element attr="value">Text</element></root>';
// 使用DOMParser解析XML字符串
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlString, 'text/xml');
console.log(xmlDoc);
// 获取解析后的XML文档的元素
var element = xmlDoc.getElementsByTagName('element')[0];
// 访问元素的文本内容
console.log(element.textContent); // 输出: Text
// 访问元素的属性
console.log(element.getAttribute('attr')); // 输出: value
</script>
</html>