一、发展历史
1、XML 全称 extensiable markup language 可扩展标记语言
2、XML 之父 —— Tim Bray
3、html 的缺点
① 标签是规定好的,用户不能自定义
② 显示样式和数据绑定在一起,数据无复用
③ html 标签没有含义
4、为什么需要 xml
① 可作为程序间通讯的标准,用 xml 传递数据,具有良好的可读性和可维护性
② 可作为配置文件
③ 可充当小型数据库
二、XML 语法
三、XML 文件约束
四、PHP XML 编程
—— 常用的三种:dom、xpath、simpleXML
4.1、DOM:文档对象模型 document object model
(1)核心思想:把 XML 看成对象模型,通过对象方式操作
(2)CRUD 操作
① 查询
$Xmldoc = new DOMDocument(); 创建一个 DOMDocument 对象
$Xmldoc->load("classes.xml"); 指定加载 XML
$stus = $Xmldoc->getElementsByTagName("学生");
② 添加
$stu_node = $Xmldoc->createElement("学生"); 创建学生节点
$stu_node->setAttribute("性别","男"); 创建属性节点
$stu_node->appendChild($stu_node_name); 挂载
$Xmldoc->save("classes.xml"); 保存xml
③ 删除
$stu1->parentNode->removeChild($stu1);
④ 更新
$stu1_age->nodeValue += 10;
(3)DOM 的缺点:可以跨层取出,但不能保持层级关系
4.2、Xpath
XML Path Language
—— 一种标志节点位置的语言
(1)核心思想:通过 Xpath 迅速简洁定位你要查找的节点
(2)创建 XPath
$doc = new DOMDocument();
$xpath = new DOMXpath($doc);
$items = $xpath->query("XPath路径表达式");
XPath 路径表达式: /、//、*、[ ]、@id、...
4.3、SimpleXML
以面向对象方式操作 XML 文件
(1)PHP 5 中的 SimpleXML 可将 XML 文件元素转化为对象,相同子元素转换为对象数组
(2)载入 XML 文件
① 直接
$libary = simpleXml_load_file("booke.xml");
② 装载 DOM 对象
$dom = new DOMDocument();
$dom->preservrWhiteSpace = false;
$dom->load("book.xml");
$libary = simpleXml_import_dom($dom);
③ 装载 string
(3)simpleXml 结合 XPath 使用
$titles = $libary->XPath("//title");
4.4、php 怎么解析从网页中获取的 xml 数据
$apistr=file_get_contents("http://api.map.baidu.com/telematics/v2/weather?location=%E4%B8%8A%E6%B5%B7&ak=B8aced94da0b345579f481a1294c9094"); //获取xml内容
$apiobj=simplexml_load_string($apistr);//解析xml代码
$todayobj=$apiobj->results->result[0]->date;//读取星期
$weatherobj=$apiobj->results->result[0]->weather;//读取天气
$windobj=$apiobj->results->result[0]->wind;//读取风力
$temobj=$apiobj->results->result[0]->temperature;//读取温度
$contentStr = "上海\n{$todayobj}\n天气:{$weatherobj}\n风力:{$windobj}\n温度:{$temobj}";
echo $contentStr;