xml 数据的解析的重构
1、xml 数据打印如下。如图1
1 2 3 4 5 6 7 8 9 10 11 12 | < xml > < AppId > <![CDATA[wxd98c58b273d21bdf]]> </ AppId > < CreateTime >1626662709</ CreateTime > < InfoType > <![CDATA[component_verify_ticket]]> </ InfoType > < ComponentVerifyTicket > <![CDATA[ticket@@@bVAZ8WK0CCTWNowBEfvH7SWIRiPhoeNVczaOnAiPN8fzN2tNrxNK_mzJaUd-WFslGAyl6cSR1ryUinlthRQ0SA]]> </ ComponentVerifyTicket > </ xml > |
2、现阶段是将 xml 转换为 数组。代码实现如下。libxml_disable_entity_loader 函数已自 PHP 8.0.0 起被废弃。强烈建议不要依赖本函数。
1 2 | libxml_disable_entity_loader(true); $values = Json::decode(Json::encode(simplexml_load_string( $xml , 'SimpleXMLElement' , LIBXML_NOCDATA)), true); |
3、转换为数组后,打印结果如下。如图2
1 2 3 4 5 6 7 | Array ( [AppId] => wxd98c58b273d21bdf [CreateTime] => 1626662709 [InfoType] => component_verify_ticket [ComponentVerifyTicket] => ticket@@@bVAZ8WK0CCTWNowBEfvH7SWIRiPhoeNVczaOnAiPN8fzN2tNrxNK_mzJaUd-WFslGAyl6cSR1ryUinlthRQ0SA ) |
4、删除函数:libxml_disable_entity_loader。不转换为数组。直接使用对象。LIBXML_NOCDATA 表示 将 CDATA 合并为文本节点。如图3
1 2 3 4 | $values = simplexml_load_string( $xml , 'SimpleXMLElement' , LIBXML_NOCDATA); print_r( $values ); echo $values ->AppId; exit ; |
1 2 3 4 5 6 7 8 | SimpleXMLElement Object ( [AppId] => wxd98c58b273d21bdf [CreateTime] => 1626662709 [InfoType] => component_verify_ticket [ComponentVerifyTicket] => ticket@@@bVAZ8WK0CCTWNowBEfvH7SWIRiPhoeNVczaOnAiPN8fzN2tNrxNK_mzJaUd-WFslGAyl6cSR1ryUinlthRQ0SA ) wxd98c58b273d21bdf |
近期评论