php用array创建xml并且 post 发送 ,PHP解析

1 篇文章 0 订阅
1 篇文章 0 订阅

最近需要使用到这个功能。

我们通过array这个键值对这个功能,再通过递归的思想构造xml文档。 XMLWriter()这个类的使用显得可有可无。 毕竟,可以采用直接字符串的方法直接构造出xml文档..嗯。这是个人思路

<meta charset="utf-8"/>
<?php
error_reporting(E_ALL);//<meta charset="utf-8"/>
/**
 * Created by PhpStorm.
 * User: ipqhjjybj
 * Date: 13-12-21
 * Time: 下午3:18
 */

$data_array = array(
 "ShopMain" => array(
 "MainShopID" => "2013",
 "MainPicURL" => "localhost/mobileAsserts/images/2013_one_main.png",
 "Title" => "这里是产品的标题",
 "Description" => "这里是产品的描述",
 "ClassID" => "1",
 "Price" => "333.23",
 "RecommendLevel" => "3"
 )
);

// 根结点
/**
 * @param $xml class
 * @param $data array
 */
function create($data)
{
 global $xml;
 foreach($data as $key => $row)
 {
 $xml .= "<".$key.">";
 if(is_array($row)){
 create($row);
 }else{
 $xml.=$row;
 }
 $xml .= "</".$key.">";
 }
}
//
//$data_array 必须是一个数组对象,且格式如上文所示
//切记!!
create($data_array);

/*
这是输出的xml的结构
$xml = "
<ShopMain>
<MainShopID>2013</MainShopID> <!--产品编号-->
<MainPicURL>localhost/mobileAsserts/images/2013_one_main.png</MainPicURL><!--产品的主文件URL-->
<Title>这里是产品的标题</Title>
<Description>这里是产品的描述</Description>
<ClassID>1</ClassID><!--这里是产品的所属类别-->
<Price>333.23</Price> <!--这里是产品的价格-->
<RecommendLevel>3</RecommendLevel><!--产品的推荐程度-->
</ShopMain>";
*/

//下面开始发送xml数据
function curl_post($url, $post = NULL, array $options = array())
{
 $header[] = "Content-type: text/xml";
 $defaults = array(
 CURLOPT_POST => 1,
 CURLOPT_HTTPHEADER => $header,//CURLOPT_HTTPHEADER => header,//错误的用法CURLOPT_HEADER => $header,这里==我花了半个小时
 CURLOPT_URL => $url,
 CURLOPT_FRESH_CONNECT => 1,
 CURLOPT_RETURNTRANSFER => 1,
 CURLOPT_FORBID_REUSE => 1,
 CURLOPT_TIMEOUT => 4,
 CURLOPT_POSTFIELDS => $post
 );
 $ch = curl_init($url);
 curl_setopt_array($ch, ($options + $defaults));
 if( ! $result = curl_exec($ch))
 {
 trigger_error(curl_error($ch));
 }
 curl_close($ch);
 return $result;
}
//下面是函数实现,发送数据
function debug($value)
{
 $url = 'http://localhost/mobileAsserts/xmlParse.php';  //  这是你发送到的文件
 return curl_post($url,$value);
}
echo debug($xml);

下面我附上解析的php代码

<?php
error_reporting(E_ALL);//<meta charset="utf-8"/>
/**
 * Created by PhpStorm.
 * User: ipqhjjybj
 * Date: 13-12-22
 * Time: 上午9:21
 */
$postStr = $GLOBALS['HTTP_RAW_POST_DATA'];

//echo $GLOBALS[0];
if(!empty($postStr))
{
 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

$MainShopID = $postObj->MainShopID;   //  通过类似的方法可以获得
 $Title = $postObj->Title;
 echo $MainShopID;     //可以类似获得所需要的
 echo $Title;
}
else{
 echo "No post data";
}
?>

真心因为几个错误弄了好久。

1、php函数内部使用了全局变量,却没有用global声明

2、curl函数调用时,参数写错了。

转载请附上出处http://hlyblog.net/?p=57




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值