PHP操作XML,XML学习二,案例练习

作者: JONE 分类: PHP/MySQL 发布时间: 2017-09-01 23:53

案例一 新浪天气查询接口(接口调用)

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>

发表评论

电子邮件地址不会被公开。 必填项已用*标注