PHP操作XML,XML学习二,案例练习
案例一 新浪天气查询接口(接口调用)
1、接口的调用说明
接口地址:
http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0
接口类型:HTTP GET请求
参数说明:
city :要查询城市的名称,文本要进行格式转换,转换为utf-8格式且数据需要使用urlencode进行转码
password :密钥,固定
day :0代表要查询当天的天气情况
2、接口调用的具体实现
weather文件夹(index.html 定义城市表单、 deal.php 调用接口)
代码实现HTML代码
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>新浪天气查询</title> </head> <body> <form action='deal.php' method='post'> 请输入要查询城市的名称:<input type='text' name='city' /> <input type='submit' name='submit' value='查询' /> </form> </body> </html>
代码实现PHP代码
<?php //1、设置响应头信息 header('Content-type:text/html; charset=utf-8'); //2、判断是否为正常请求 if(isset($_POST['submit'])) { //3、接收表单信息 $city = $_POST['city']; //4、把$city转换为GBK格式 $city = mb_convert_encoding($city, 'gbk', 'utf-8'); //5、把$city使用urlencode进行转码 $city = urlencode($city); //6、定义请求的url链接 $url = "http://php.weather.sina.com.cn/xml.php?city={$city}&password=DJOYnieT8234jlsK&day=0"; //7、发送HTTP中的GET请求 $str = file_get_contents($url); //8、生成SimpleXML对象 $xml = simplexml_load_string($str); //9、获取相关的节点信息 echo '城市名称:'.$xml->Weather->city; echo '<hr />'; echo '天气情况:'.$xml->Weather->status1; echo '<hr />'; echo '穿衣建议:'.$xml->Weather->chy_shuoming; }
案例二 综合案例-SimpleXML+Xpath电子词典
XML文件 data.xml
<?xml version="1.0" encoding="UTF-8"?> <dict> <word> <en>boy</en> <zh>男孩</zh> </word> <word> <en>girl</en> <zh>女孩</zh> </word> </dict>
后台添加(添加word节点)admin.php
<?php //1、设置响应头信息 header('Content-type:text/html; charset=utf-8'); //2、判断是否为正常请求 if(isset($_POST['submit'])) { //3、接收表单数据 $en = $_POST['en']; $zh = $_POST['zh']; //4、生成SimpleXML对象 $xml = simplexml_load_file('data.xml'); //5、添加word节点 $word = $xml->addChild('word'); //6、向$word中添加en与zh子节点 $word->addChild('en',$en); $word->addChild('zh',$zh); //7、使用asXML保存数据到XML文件中 $xml->asXML('data.xml'); echo '<script>alert("添加成功");</script>'; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>后台管理系统</title> </head> <body> <h1>金山电子词霸</h1> <form action='<?php echo $_SERVER['PHP_SELF'];?>' method='post'> 英文:<input type="text" name='en' size='40' /> <hr /> 中文:<textarea name='zh' cols="40" rows="8"></textarea> <hr /> <input type="submit" name="submit" value="添加" /> </form> </body> </html>
前台查询(数据检索)index.php
<?php //1、设置响应头信息 header('Content-type:text/html; charset=utf-8'); $str = ''; //2、判断是否为正常请求 if(isset($_POST['submit'])) { //3、接收表单数据 $en = $_POST['en']; //4、创建SimpleXML对象 $xml = simplexml_load_file('data.xml'); //5、使用xpath + []检索数据 $data = $xml->xpath("//word[en='$en']"); //6、判断$data是否为空,不为空则获取数据 if(!empty($data)) { $zh = $data[0]->zh; $str = $en; } else { $str = '未查询到相关结果'; } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>金山电子词霸</title> </head> <body> <h1>金山电子词霸</h1> <form action='<?php echo $_SERVER['PHP_SELF'];?>' method='post'> 英文:<input type="text" name='en' size='40' value='<?php echo $str;?>' /> <hr /> 中文:<textarea name='zh' cols="40" rows="8"><?php if(isset($zh)) {echo $zh;}?></textarea> <hr /> <input type="submit" name="submit" value="查询" /> </form> </body> </html>