PHP封装xml数据通信接口

PHP 生成XML数据

1)组装字符串 :简单,容易理解,常用

2)使用系统类

如:

DomDocument

下面详细说明 组装字符串 生成XML数据

xml数据需要1.头信息<?xml

2.根节点

3.数据

<?php

class Response{

/**

*按json方式输出通信数据

*@param integer $code 状态码

*@param string $message 提示信息

*@param array $data 数据

*return string 返回值为json

*/

//静态方法,构造json数据

public static function xml(){

$xml="<?xml version=‘1.0‘ encoding=‘UTF-8‘?>";

$xml.="<root>";//用点好和前面的字符串链接,这个是根节点

$xml.="<code>200</code>";

$xml.="<message>数据返回成功</message>";

$xml.="<data>";

$xml.="<id>1</id>";

$xml.="<name>david</name>";

$xml.="</data>";

$xml.="</root>";

echo $xml;

}

}

Response::xml();

?>

运行网页显示:

200数据返回成功1david

查看源代码:

<?xml version=‘1.0‘ encoding=‘UTF-8‘?><root><code>200</code><message>

数据返回成功

</message><data><id>1</id><name>david</name></data></root>

浏览器中查看源码时数据紧靠在一起,不直观。所以每个数据输出后换行。

$xml="<?xml version=‘1.0‘ encoding=‘UTF-8‘?>\n";

$xml.="<root>\n";//用点好和前面的字符串链接,这个是根节点

$xml.="<code>200</code>\n";

$xml.="<message>数据返回成功</message>\n";

$xml.="<data>\n";

$xml.="<id>1</id>\n";

$xml.="<name>david</name>\n";

$xml.="</data>\n";

$xml.="</root>\n";

修改后:

<?xml version=‘1.0‘ encoding=‘UTF-8‘?>

<root>

<code>200</code>

<message>数据返回成功</message>

<data>

<id>1</id>

<name>david</name>

</data>

</root>

默认情况下:xml标签不会在浏览器页面中显示,只会在查看源代码时显示

因为默认情况下http响应头信息是html类型。默认: header("Content-

Type:text/html");

1.png

如果需要在页面上显示xml标签,就需要修改响应头信息中content type为

text/xml

public static function xml(){

header("Content-Type:text/xml");

$xml="<?xml version=‘1.0‘ encoding=‘UTF-8‘?>\n";

$xml.="<root>\n";//用点好和前面的字符串链接,这个是根节点

$xml.="<code>200</code>\n";

$xml.="<message>数据返回成功</message>\n";

$xml.="<data>\n";

$xml.="<id>1</id>\n";

$xml.="<name>david</name>\n";

$xml.="</data>\n";

$xml.="</root>\n";

echo $xml;

}

PHP xml方式封装接口数据方法

封装方法:

xmlEncode($code,$message="",$data=array())

复杂数组解析不出来:

<?php

class Response{

public static function xmlEncode($code,$message,$data=array()){

if(!is_numeric($code)){

return ‘‘;

}

$result=array(

‘code‘=>$code,

‘message‘=>$message,

‘data‘=>$data,

);

header("Content-Type:text/xml");

$xml="<?xml version=‘1.0‘ encoding=‘UTF-8‘?>\n";

$xml.="<root>\n";//用点好和前面的字符串链接,这个是根节点

$xml.=self::xmlToEncode($result);

$xml.="</root>\n";

echo $xml;

}

public static function xmlToEncode($data){

//解析数组,拼装成xml数据

$xml= "";

foreach($data as $key=>$value){

$xml.= "<{$key}>";//大括号里面可以被识别为变量

$xml.= $value;

$xml.="</{$key}>";

}

return $xml;

}

}

$data=array(

‘id‘=> 1,

‘name‘=>‘david‘

);

Response::xmlEncode(200,‘success‘,$data);

?>

出现:

<root>

<code>200</code>

<message>success</message>

<data>Array</data>

</root>

当foreach循环到最后一个数据时$value为数组,所以不会显示出来,因此需要

递归的调用xmlToEncode($value)

就是讲上面的代码

$xml.= is_$value;改为:

$xml.=is_array($value)?self::xmlToEncode($value):$value;

结果:

<root>

<code>200</code>

<message>success</message>

<data>

<id>1</id>

<name>david</name>

</data>

</root>

如果要封装的数据不是key=>value形式:

(1,2,3)会自动封装成xml <0>1</0><1>2</1><2>2</2> 数字不能作标签所以

报错

可以转换成:

<item id="0">1</item>形式

最终版:

<?php

class Response{

/**

*按json方式输出通信数据

*@param integer $code 状态码

*@param string $message 提示信息

*@param array $data 数据

*return string 返回值为json

*/

//静态方法,构造json数据

/*public static function json($code,$message=‘‘,$data=array()){

if(!is_numeric($code)){

return ‘‘;

}

$result=array(

‘code‘=>$code,

‘message‘=>$message,

‘data‘=>$data

);

echo json_encode($result);

exit;

}*/

/*public static function xml(){

header("Content-Type:text/xml");

$xml="<?xml version=‘1.0‘ encoding=‘UTF-8‘?>\n";

$xml.="<root>\n";//用点好和前面的字符串链接,这个是根节点

$xml.="<code>200</code>\n";

$xml.="<message>数据返回成功</message>\n";

$xml.="<data>\n";

$xml.="<id>1</id>\n";

$xml.="<name>david</name>\n";

$xml.="</data>\n";

$xml.="</root>\n";

echo $xml;

}*/

public static function xmlEncode($code,$message,$data=array()){

if(!is_numeric($code)){

return ‘‘;

}

$result=array(

‘code‘=>$code,

‘message‘=>$message,

‘data‘=>$data,

);

header("Content-Type:text/xml");

$xml="<?xml version=‘1.0‘ encoding=‘UTF-8‘?>\n";

$xml.="<root>\n";//用点好和前面的字符串链接,这个是根节点

$xml.=self::xmlToEncode($result);

$xml.="</root>\n";

echo $xml;

}

public static function xmlToEncode($data){

//解析数组,拼装成xml数据

$xml= $attr="";

foreach($data as $key=>$value){

if(is_numeric($key)){

$attr=" id=‘{$key}‘";

$key="item";

}

$xml.= "<{$key}{$attr}>";//大括号里面可以被识别为变量

$xml.=is_array($value)?self::xmlToEncode($value):$value;

$xml.="</{$key}>";

}

return $xml;

}

}

$data=array(

‘id‘=> 1,

‘name‘=>‘david‘,

‘type‘=>array(4,5,6)

);

Response::xmlEncode(200,‘success‘,$data);

?>

时间: 2024-10-27 07:13:48

PHP封装xml数据通信接口的相关文章

php开发安卓服务器之 php封装json xml通用app数据通信接口

php文件:test.php 是通用通信类 <?php class Response { const JSON = "json"; /** * 按综合方式输出通信数据 * @param integer $code 状态码 * @param string $message 提示信息 * @param array $data 数据 * @param string $type 数据类型 * return string */ public static function show($co

用javabean封装xml文档数据

//book.xml <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>冰与火之歌</name> <author>乔治马丁</author> <year>2014</year> <price>89</price> <la

PHP接口数据的封装XML和JSON

使用PHP开发app后端的接口时,我们需要返回数据,最常用的就是XML和JSON格式的数据,那么样返回呢? 1.JSON json数据是最容制造的,只要使用php自带的json_encode()函数就可以简单的制作出json数据了 2.XML xml数据就要复杂一点了,让我们看一下xml数据的格式 那么怎样构造呢? 3.制作生产接口数据的类 <?php //定义生成接口数据类 class Api { /* * 生成json数据格式 * @param integer $code 状态码 * @pa

Java-封装生成JSON数据和XML数据类

1.背景 借鉴与php中 app接口的实现(php写app接口生成xml和json数据),封装了java版的json和xml数据操作类! 2.准备 在使用之前,需要引入 json 的jar 包:点我下载 ! 这里实现了,对象转json , 对象集合转json, 对象转xml,对象集合转xml ; 3.appUtil 工具类实现 具体的实现过程,我就不解释了,一边写,一边测试!直到写成为止! 里面的 tojsonArray() 方法 没有使用,可以删除,不过想生成json数组的 ,就不需要删除了!

JSP解析XML数据

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="javax.xml.parsers.DocumentBuilderFactory"%> <%@page import="javax.xml.parsers.DocumentBuilder"%> <%

XML数据解析(元素属性) SAX方式NSParser代理

本文使用的XML文档格式 SAX解析XML数据是一行一行的解析,与DOM方式将整个文档加入内存解析方式不同, SAX解析使用NSParser(apple自带框架)DOM依靠GData(谷歌开发) SAX解析数据原理:事件驱动,每发现一个元素就通知代理,在代理方法中将发现的元素封装存储到字典中,我们通过遍历字典拿到发现的每个元素,模型化后存放在数据源数组中 下面给出这个XML文档的SAX解析代码,其余部分代码与前面几篇文章相同 SAX解析常用的代理方法:(都是代理方法,解析器发现一个数据就通知对应

以对象的方式来访问xml数据表(二)

为什么要以对象的方式来访问xml数据表? 还记得,自己是在一次完成师兄布置的任务时接触到了xml,那时候需要用xml来作为数据文件,保存一个简单的图书管理系统的数据.于是就知道了,可以用xml文件来保存数据(而且比用简单的文本文件保存数据规范的多,在访问与读取数据上面都十分方便),就这样使用xml的征程开始了. 自己做的第一个WPF桌面应用程序——备忘录,就是用xml文件作为数据库.而且那个时候考虑到以后可能会经常使用到xml文件作为数据库,于是乎就写了一个专门用于访问xml文件的动态链接库,这

iOS开发网络篇—XML数据的解析

iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是常用的一种用于交互的数据格式,一般也叫XML文档(XML Document) XML举例 <videos> <video name="小黄人 第01部" length="30" /> <video name="小黄人 第02部&qu

Android 之XML数据解析(2)—— SAX解析

(以下文章基本照抄郭霖大神的<第一行代码>) 在Android之 解析XML文件(1)-- Pull解析 中我们讲了Pull方式解析XML文件.今天讲另外一种方式,SAX解析XML文件. 首先还是先看代码. 一. SAX解析参考代码 private void parseXMLWithSAX(String xmlData){ try{ SAXParserFactory factory = SAXParserFactory.newInstance(); XMLReader xmlReader =