如何解析JAXB Xml(XMPP Stanza)?

时间:2014-01-19 04:24:06

标签: php push-notification xmpp google-cloud-messaging

我正在使用JAXL库连接到google gcm ccs服务器。我收到了应用程序发送的上游消息。我在解析文件时遇到问题。接收消息回调('on_normal_message')为XMPPStanza对象提供回调。我需要解析此对象以获取移动应用程序发送的实际消息。以下是我的XMPPStanza。

XMPPStanza Object

(     [xml:XMPPStanza:private] => JAXLXml对象         (             [name] =>信息             [ns] =>胡言乱语:客户端             [attrs] =>排列                 (                     [to] => ID@gcm.googleapis.com                     [from] => devices@gcm.googleapis.com                     [type] =>正常                 )

        [text] => 
        [childrens] => Array
            (
                [0] => JAXLXml Object
                    (
                        [name] => gcm
                        [ns] => google:mobile:data
                        [attrs] => Array
                            (
                            )

                        [text] => {
                        "category":"com.google.android.gcm.demo.app","

                        data":{"my_message":"Hello World","my_action":"com.google.android.gcm.demo.app.ECHO_NOW"},

                        "message_id":"2",

                        "from":"GCMID"
                        }
                        [childrens] => Array
                            (
                            )

                        [parent] => JAXLXml Object

递推                             [流浪者] => JAXLXml对象  递推                         )

            )

        [parent] => 
        [rover] => JAXLXml Object

递推         )

我需要的数据是[儿童]。它是一个JAXLXml对象数组。我如何得到这些孩子的[文字]。这实际上是一个json字符串。我无法json_decode这个字符串,因为“”“。我如何轻松获得这些数据?我必须创建一个ack消息,在收到消息后发送到ccs服务器。我需要来自,message_id fileds in the original消息。

谢谢, abbiya

1 个答案:

答案 0 :(得分:0)

提取所需的文本节点后(请阅读http://abhinavsingh.com/blog/2012/09/jaxlxml-strophe-style-xml-builder-working-with-jaxl-a-networking-library-in-php-part-2/了解如何),使用html_entity_decode,如下所示:

$ php -r 'echo html_entity_decode("{
                            "category":"com.google.android.gcm.demo.app","

                            data":{"my_message":"Hello World","my_action":"com.google.android.gcm.demo.app.ECHO_NOW"},

                            "message_id":"2",

                            "from":"GCMID"
                            }");'
{
                            "category":"com.google.android.gcm.demo.app","

                            data":{"my_message":"Hello World","my_action":"com.google.android.gcm.demo.app.ECHO_NOW"},

                            "message_id":"2",

                            "from":"GCMID"
                            }