用PHP的DOM控件来创建输出

输出的格式为XML

接口开发的相关文件及说明

<?php
header("Content-type: text/xml");//头文件非常重要 //创建xml文件
$dom=new DOMDocument('1.0','utf-8'); //建立<root>元素
$root=$dom->createElement('root'); //把<root>元素追加到文档里面
$dom->appendChild($root); //建立<book>元素并将其作为<root>的子元素
$book=$dom->createElement('book');
$root->appendChild($book); //接受GET过来的数据
$key=$_GET['key'];
$name=$_GET['name']; //引入数据库配置文件
include("config.inc.php"); //将get来的数据与数据库里的数据进行校验
$sql1=mysql_query("select count(id) as sum from user where `key` = ".$key.""); //返回结果集
$result=mysql_fetch_array($sql1); //如果数据库里存在key
if($result[0]>0){
//校验name
$sql2=mysql_query("select * from book where `name` = '".$name."'");
$row=mysql_fetch_row($sql2); if(mysql_num_rows($sql2)>0){ //为<book>创建name元素,并追加name的值
$name=$dom->createElement('name');
$nameText=$dom->createTextNode($row[1]);
$name->appendChild($nameText);
$book->appendChild($name); //为<book>创建author元素,并追加author的值
$author=$dom->createElement('author');
$authorText=$dom->createTextNode($row[2]);
$author->appendChild($authorText);
$book->appendChild($author); //为<book>创建press元素,并追加press的值
$press=$dom->createElement('press');
$pressText=$dom->createTextNode($row[3]);
$press->appendChild($pressText);
$book->appendChild($press); //为<book>创建price元素,并追加prcie的值
$price=$dom->createElement('price');
$priceText=$dom->createTextNode($row[4]);
$price->appendChild($priceText);
$book->appendChild($price); //为<book>创建time元素,并追加time的值
$time=$dom->createElement('time');
$timeText=$dom->createTextNode($row[5]);
$time->appendChild($timeText);
$book->appendChild($time); //为<book>创建intro元素,并追加intro的值
$intro=$dom->createElement('intro');
$introText=$dom->createTextNode($row[6]);
$intro->appendChild($introText);
$book->appendChild($intro); }else{//如果name不存在
//建立<error_code>,并追加error_code的值
$error_code=$dom->createElement('error_code');
$error_code_Text=$dom->createTextNode('错误代码1001');
$error_code->appendChild($error_code_Text);
$book->appendChild($error_code); //建立<result>,并追加result的值
$result=$dom->createElement('result');
$result_Text=$dom->createTextNode('书名不存在或错误');
$result->appendChild($result_Text);
$book->appendChild($result); } }else{//如果key不存在
//建立<error_code>,并追加error_code的值
$error_code=$dom->createElement('error_code');
$error_code_Text=$dom->createTextNode('错误代码1002');
$error_code->appendChild($error_code_Text);
$book->appendChild($error_code); //建立<result>,并追加result的值
$result=$dom->createElement('result');
$result_Text=$dom->createTextNode('密钥错误或不存在');
$result->appendChild($result_Text);
$book->appendChild($result);
} //在一字符串变量中建立XML结构
$xmlText=$dom->saveXML(); //输出XML字符串
echo $xmlText;
?>

传参key=12345,name=C语言。  

然后输出的结果是:

这里是用户用javascript调用xml文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>获取数据</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<script type="text/javascript">
window.onload=function(){
var btn=document.getElementById('btn');
btn.onclick=function(){
var title=document.getElementById('title').value;
var name,author,press,price,book;
if(window.XMLHttpRequest){
//code for IE+7,Firefox,Chrome,Opera,Safari
xmlhttp=new XMLHttpRequest();
}else{
//code foe IE6,IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHttp");
}
url='http://localhost/api/index.php?key=12345&name='+title;
//console.log(url);
xmlhttp.open("GET",url,false);
xmlhttp.send();
xmldoc=xmlhttp.responseXML;
book=xmldoc.getElementsByTagName("book");
error_code=xmldoc.getElementsByTagName("error_code");
if(error_code.length==1){
alert("书名错误或不存在");
}
name=xmldoc.getElementsByTagName("name")[0];
author=xmldoc.getElementsByTagName("author")[0];
press=xmldoc.getElementsByTagName("press")[0];
price=xmldoc.getElementsByTagName("price")[0];
text="<table border='1'><tr><th>书名</th><th>作者</th><th>出版社</th><th>价格</th></tr>";
text+="<tr>";
text+="<td>"+name.firstChild.nodeValue+"</td>";
text+="<td>"+author.firstChild.nodeValue+"</td>";
text+="<td>"+press.firstChild.nodeValue+"</td>";
text+="<td>"+price.firstChild.nodeValue+"</td>";
text+="</tr>";
text+="</table>";
document.getElementById("text").innerHTML=text;
}
}
</script>
<style type="text/css">
</style>
</head>
<body>
书名:<input type="text" name="title" id="title"/>
<input type="submit" id="btn" value="查询"/>
<div id="text"></div>
</body>
</html>

  

这里是接口开发的相关代码:

http://download.csdn.net/detail/yxhbk/9506715

这里是接口开发说明文档:

http://wenku.baidu.com/view/14706f8369eae009591bec44

接口开发之PHP创建XML文件的更多相关文章

  1. .net中创建xml文件的两种方法

    .net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...

  2. C#操作XML学习之创建XML文件的同时新建根节点和子节点(多级子节点)

    最近工作中遇到一个问题,要求创建一个XML文件,在创建的时候要初始化该XML文档,同时该文档打开后是XML形式,但是后缀名不是.在网上找了好些资料没找到,只能自己试着弄了一下,没想到成功了,把它记下来 ...

  3. Java 创建xml文件和操作xml数据

    java中的代码 import java.io.File; import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; ...

  4. TinyXML2读取和创建XML文件 分类: C/C++ 2015-03-14 13:29 94人阅读 评论(0) 收藏

    TinyXML2是simple.small.efficient C++ XML文件解析库!方便易于使用,是对TinyXML的升级改写!源码见本人上传到CSDN的TinyXML2.rar资源:http: ...

  5. XML文件操作类--创建XML文件

    这个类是在微软XML操作类库上进行的封装,只是为了更加简单使用,包括XML类创建节点的示例. using System; using System.Collections; using System. ...

  6. asp.net创建XML文件方法

    方法一:按照XML的结构一步一步的构建XML文档.    通过.Net FrameWork SDK中的命名空间"System.Xml"中封装的各种类来实现的 方法一:按照XML的结 ...

  7. C#创建XML文件并保存

    随着XML的普及以及在动态WEB应用程序中大量应用,如何通过.NET创建,删除,修改XML文件变的也来也重要了.一个简单的概念是,XML文件跟大的文本文件并没有什么区别,同时它是先于.NET出现,很多 ...

  8. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

  9. 创建XML文件

    //创建XML文件              XmlDocument xmldoc = new XmlDocument();             XmlText xmltext;          ...

随机推荐

  1. Chrome 前端 插件

    本文内容都来源于偶整理的fetool. 想让更多使用Chrome的小伙伴,体验到这些令人愉悦的小工具,所以单独整理了这篇文章. 如果你是 前端/服务端/设计/面向Github编程/视觉控,相信下列的插 ...

  2. 手机pc显示不同的内容

    <script type="text/javascript"> // var txt = $('#sjyincang').html(); // alert(txt); ...

  3. MongoDB资料汇总专题(转)

    原文地址:http://blog.nosqlfan.com/html/3548.html 1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 Mo ...

  4. POJ 2263 Heavy Cargo(ZOJ 1952)

    最短路变形或最大生成树变形. 问 目标两地之间能通过的小重量. 用最短路把初始赋为INF.其它为0.然后找 dis[v]=min(dis[u], d); 生成树就是把最大生成树找出来.直到出发和终点能 ...

  5. 脱了裤子放屁之std::string

    一个天天跟c#奋斗的苦逼c++程序猿 改自己曾经代码的时候发现有例如以下几行. char szPath[MAX_PATH] = {0}; GetModuleFileNameA(NULL,szPath, ...

  6. rac_udev建立磁盘方式安装grid时不识别磁盘

    原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明下面出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlo ...

  7. ActiveMQ的消息的(含附件)发送和接收使用

    首先介绍一下ActiveMQ的版本:apache-activemq-5.10.2 启动MQ:activemq.bat 下面来编写MQ的发送类: 里面的发送ip和模式名称可以根据具体的实际情况填写. S ...

  8. delphi2010\delphi XE7 开发及调试WebService 实例

    使用delphi已经10多年了,一直搞桌面程序开发,对Webservice一直很陌生,近来因工作需要,学习delphi开发WebService,担心遗忘,作此笔记. 特别感谢 中塑在线技术总监 大犇  ...

  9. Vue中的methods、watch、computed

    看到这个标题就知道这篇文章接下来要讲的内容,我们在使用vue的时候methods.watch.computed这三个特性一定经常使用,因为它们是非常的有用,但是没有彻底的理解它们的区别和各自的使用场景 ...

  10. signal( SIGINT, SigIntHandler )

    signal 的第1个参数signum表示要捕捉的信号,第2个参数是个函数指针,表示要对该信号进行捕捉的函数,该参数也可以是SIG_DEF(表示交由系统缺省处理,相当于白注册了)或SIG_IGN(表示 ...