xml的解构与组装

xml的结构

 
  
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml>
 
 

xml转成对象

 $postObj = simplexml_load_string($ticket_xml, 'SimpleXMLElement', LIBXML_NOCDATA);

拼装xml

    /**
     * 文本消息组装xml
     *
     * @param unknown $postObj
     * @param unknown $content
     * @param number $funcFlag
     * @return string
     */
    public function event_key_text($postObj, $content, $funcFlag = 0)
    {
        if (! empty($content)) {
            $xmlTpl = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[text]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            <FuncFlag>%d</FuncFlag>
                        </xml>";
            $resultStr = sprintf($xmlTpl, $postObj->FromUserName, $postObj->ToUserName, time(), $content, $funcFlag);
            return $resultStr;
        }else{
            return '';
        }
    }

/**
* 返回图文消息组装xml
*
* @param unknown $postObj
* @param unknown $arr_item
* @param number $funcFlag
* @return void|string
*/
public function event_key_news($postObj, $arr_item, $funcFlag = 0)
{
// 首条标题28字,其他标题39字
if (! is_array($arr_item)) {
return;
}
$itemTpl = "<item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<PicUrl><![CDATA[%s]]></PicUrl>
<Url><![CDATA[%s]]></Url>
</item>
";
$item_str = "";
foreach ($arr_item as $item) {
$item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']);
}
$newsTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<Content><![CDATA[]]></Content>
<ArticleCount>%s</ArticleCount>
<Articles>$item_str</Articles>
<FuncFlag>%s</FuncFlag>
</xml>";
$resultStr = sprintf($newsTpl, $postObj->FromUserName, $postObj->ToUserName, time(), count($arr_item), $funcFlag);
return $resultStr;
}
 

 

转载于:https://www.cnblogs.com/huay/p/10356419.html

在实际的项目中,IPhone应用程序会存在很多与服务器之间的数据交互的地方,XML是首选方案。 此包可以解决XML文件的解析、对象转化为XML字符串的问题。 1 通过调用解析类,可以将XML的DATA数据转换为XmlNode对象,XmlNode以树形结构进行XML的数据封装,使用的时候按照树形结构进行数据的获取。(如有问题请留言) XmlNode结构如下: @interface XmlNode : NSObject { } @property(nonatomic,retain)NSMutableDictionary *attributes;//属性 @property(nonatomic,retain)NSMutableArray *childs;//下级子节点 @property(nonatomic,retain)NSString *name;//节点名称 @property(nonatomic,retain)NSString *value;//节点值 @property BOOL haveChilds;//是否有子节点 @property BOOL haveAttribute;//是否有属性 @property(nonatomic,retain)NSMutableString *xmlString; -(void)addAttribute:(NSDictionary *)att; -(void)addChild:(XmlNode *)node; -(NSString *)getXmlString;//将此对象装换为XML字符串 -(NSString *)getNodeValue:(NSString *)nodeName;//在此节点中根据子节点名称获得子节点值 -(NSString *)getAttributeValue:(NSString *)attName;//获得此节点的属性值 @end 2 而解析器只需要调用相应的方法,传入相应的参数即可。 -(XmlNode *)getObject:(NSString *)elName xmlData:(NSData *)xmlData;//从data中获取对象,并返回封装对象XmlNode 。 -(NSMutableArray *)getList:(NSString *)elName xmlData:(NSData *)xmlData;//从DATA中获得对象集合,集合中也是XmlNode --ps-- 花了点时间重构了之前的xml与对象的转换代码,采用了新的逻辑算法。代码更加精简,并可支持包含节点的属性转换了。 之前有人说看不懂是做什么,所以写了个小UI来进行体现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值